svf-tools 1.0.581 → 1.0.583

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.
Files changed (286) hide show
  1. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -2
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -5
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -5
  5. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -2
  6. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +32 -30
  7. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +11 -11
  8. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +11 -11
  9. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -16
  10. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +10 -10
  11. package/SVF-doxygen/html/html/CFLBase_8h_source.html +11 -9
  12. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +3 -3
  13. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +23 -21
  14. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +70 -66
  15. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +28 -262
  16. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
  17. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
  18. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +10 -10
  19. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +37 -20
  20. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +22 -19
  21. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +18 -15
  22. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +10 -10
  23. package/SVF-doxygen/html/html/CFLStat_8h_source.html +8 -11
  24. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -3
  25. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -3
  26. package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -4
  29. package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
  30. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -2
  31. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -7
  32. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -3
  34. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -4
  36. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +1 -3
  38. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -2
  39. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -2
  40. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -3
  41. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -2
  42. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -5
  43. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -5
  44. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
  47. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -2
  48. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -2
  49. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -2
  54. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -2
  55. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -3
  56. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -2
  57. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -2
  58. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -2
  59. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -2
  60. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -2
  61. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -2
  62. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -4
  63. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -2
  64. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -2
  65. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -3
  66. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -3
  67. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -3
  68. package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -2
  69. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +6 -6
  70. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -2
  73. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -3
  74. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -3
  75. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  76. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -3
  77. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -2
  78. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -2
  79. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -2
  80. package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
  81. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -2
  82. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -2
  83. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -2
  84. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +2 -2
  85. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -2
  86. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -2
  87. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -2
  90. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
  91. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  92. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -5
  93. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -6
  94. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -3
  95. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -3
  96. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  101. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  102. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +6 -6
  103. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +58 -56
  109. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +4 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +47 -42
  111. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +4 -2
  112. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +79 -26
  113. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +19 -18
  114. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +43 -20
  115. package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +24 -24
  116. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +40 -37
  117. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +55 -49
  118. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +15 -15
  119. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +19 -9
  120. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +379 -20
  121. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +12 -9
  122. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +144 -53
  123. package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +31 -32
  124. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +50 -78
  125. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +2 -0
  126. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +14 -10
  127. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +5 -7
  128. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -17
  132. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -5
  133. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  135. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +6 -10
  136. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  137. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +13 -14
  138. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  139. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +4 -5
  140. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -10
  141. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -4
  142. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +23 -19
  144. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +197 -78
  145. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +5 -5
  146. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -2
  147. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  149. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -2
  150. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -5
  153. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +5 -8
  155. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -7
  156. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -6
  158. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -25
  160. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -2
  162. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -2
  164. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +6 -10
  166. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  167. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -3
  169. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +2 -3
  170. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -2
  171. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -2
  174. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +1 -2
  176. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +2 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -20
  182. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -5
  183. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -2
  184. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  185. package/SVF-doxygen/html/html/functions.html +0 -3
  186. package/SVF-doxygen/html/html/functions_a.html +14 -4
  187. package/SVF-doxygen/html/html/functions_c.html +38 -30
  188. package/SVF-doxygen/html/html/functions_e.html +4 -1
  189. package/SVF-doxygen/html/html/functions_f.html +6 -6
  190. package/SVF-doxygen/html/html/functions_func.html +16 -6
  191. package/SVF-doxygen/html/html/functions_func_c.html +29 -27
  192. package/SVF-doxygen/html/html/functions_func_g.html +25 -16
  193. package/SVF-doxygen/html/html/functions_func_i.html +8 -4
  194. package/SVF-doxygen/html/html/functions_func_p.html +4 -1
  195. package/SVF-doxygen/html/html/functions_func_r.html +8 -2
  196. package/SVF-doxygen/html/html/functions_func_s.html +12 -9
  197. package/SVF-doxygen/html/html/functions_g.html +23 -14
  198. package/SVF-doxygen/html/html/functions_i.html +20 -13
  199. package/SVF-doxygen/html/html/functions_l.html +5 -5
  200. package/SVF-doxygen/html/html/functions_n.html +9 -4
  201. package/SVF-doxygen/html/html/functions_o.html +21 -10
  202. package/SVF-doxygen/html/html/functions_p.html +16 -17
  203. package/SVF-doxygen/html/html/functions_r.html +7 -1
  204. package/SVF-doxygen/html/html/functions_s.html +8 -5
  205. package/SVF-doxygen/html/html/functions_t.html +3 -3
  206. package/SVF-doxygen/html/html/functions_type_c.html +6 -0
  207. package/SVF-doxygen/html/html/functions_vars.html +0 -3
  208. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  209. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  210. package/SVF-doxygen/html/html/functions_vars_n.html +6 -1
  211. package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
  212. package/SVF-doxygen/html/html/functions_w.html +11 -11
  213. package/SVF-doxygen/html/html/globals_a.html +0 -4
  214. package/SVF-doxygen/html/html/globals_c.html +7 -8
  215. package/SVF-doxygen/html/html/globals_e.html +1 -2
  216. package/SVF-doxygen/html/html/globals_f.html +4 -8
  217. package/SVF-doxygen/html/html/globals_g.html +4 -8
  218. package/SVF-doxygen/html/html/globals_l.html +2 -8
  219. package/SVF-doxygen/html/html/globals_m.html +1 -4
  220. package/SVF-doxygen/html/html/globals_s.html +3 -6
  221. package/SVF-doxygen/html/html/globals_v.html +1 -4
  222. package/SVF-doxygen/html/html/globals_vars.html +22 -55
  223. package/SVF-doxygen/html/html/menudata.js +0 -1
  224. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  225. package/SVF-doxygen/html/html/namespaceSVF.html +4 -4
  226. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +2 -3
  227. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +9 -15
  228. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  229. package/SVF-doxygen/html/html/search/all_0.js +0 -1
  230. package/SVF-doxygen/html/html/search/all_1.js +6 -3
  231. package/SVF-doxygen/html/html/search/all_10.js +7 -6
  232. package/SVF-doxygen/html/html/search/all_11.js +3 -1
  233. package/SVF-doxygen/html/html/search/all_12.js +10 -9
  234. package/SVF-doxygen/html/html/search/all_13.js +6 -6
  235. package/SVF-doxygen/html/html/search/all_15.js +3 -4
  236. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  237. package/SVF-doxygen/html/html/search/all_3.js +8 -5
  238. package/SVF-doxygen/html/html/search/all_5.js +2 -1
  239. package/SVF-doxygen/html/html/search/all_6.js +3 -4
  240. package/SVF-doxygen/html/html/search/all_7.js +7 -5
  241. package/SVF-doxygen/html/html/search/all_9.js +6 -4
  242. package/SVF-doxygen/html/html/search/all_c.js +4 -5
  243. package/SVF-doxygen/html/html/search/all_d.js +1 -2
  244. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  245. package/SVF-doxygen/html/html/search/all_f.js +3 -2
  246. package/SVF-doxygen/html/html/search/functions_0.js +4 -1
  247. package/SVF-doxygen/html/html/search/functions_10.js +2 -0
  248. package/SVF-doxygen/html/html/search/functions_11.js +1 -0
  249. package/SVF-doxygen/html/html/search/functions_2.js +3 -2
  250. package/SVF-doxygen/html/html/search/functions_6.js +3 -0
  251. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  252. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  253. package/SVF-doxygen/html/html/search/typedefs_2.js +2 -0
  254. package/SVF-doxygen/html/html/search/variables_0.js +0 -1
  255. package/SVF-doxygen/html/html/search/variables_1.js +1 -2
  256. package/SVF-doxygen/html/html/search/variables_12.js +1 -2
  257. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  258. package/SVF-doxygen/html/html/search/variables_15.js +1 -2
  259. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  260. package/SVF-doxygen/html/html/search/variables_5.js +2 -1
  261. package/SVF-doxygen/html/html/search/variables_6.js +1 -2
  262. package/SVF-doxygen/html/html/search/variables_7.js +4 -5
  263. package/SVF-doxygen/html/html/search/variables_9.js +2 -1
  264. package/SVF-doxygen/html/html/search/variables_c.js +1 -3
  265. package/SVF-doxygen/html/html/search/variables_d.js +0 -1
  266. package/SVF-doxygen/html/html/search/variables_e.js +3 -2
  267. package/SVF-doxygen/html/html/search/variables_f.js +1 -0
  268. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +3 -3
  269. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +4 -4
  270. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
  271. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
  272. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
  273. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  274. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  275. package/include/CFL/CFLBase.h +2 -0
  276. package/include/CFL/CFLGrammar.h +13 -0
  277. package/include/CFL/CFLGrammar.txt +9 -33
  278. package/include/CFL/CFLSolver.h +8 -0
  279. package/include/CFL/CFLStat.h +3 -13
  280. package/include/Graphs/CFLGraph.h +69 -0
  281. package/lib/CFL/CFGNormalizer.cpp +1 -0
  282. package/lib/CFL/CFLAlias.cpp +5 -0
  283. package/lib/CFL/CFLGrammar.cpp +34 -1
  284. package/lib/CFL/CFLSolver.cpp +58 -45
  285. package/lib/CFL/CFLStat.cpp +20 -66
  286. package/package.json +1 -1
@@ -165,10 +165,10 @@ Private Member Functions</h2></td></tr>
165
165
  </table>
166
166
  </div><div class="memdoc">
167
167
 
168
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00296">296</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
169
- <div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;symbolToProductionsPair : grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">GrammarBase::Productions</a> productions;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">//GrammarBase::Productions Originalproductions = symbolToProductionsPair.second;</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> ebnfProduction : symbolToProductionsPair.second)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordtype">size_t</span> i = 1;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">size_t</span> j = 1;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">while</span> (i &lt; ebnfProduction.size())</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i].kind) == <span class="stringliteral">&quot;|&quot;</span>)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> tempPro(ebnfProduction.begin()+j, ebnfProduction.begin()+i);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; tempPro.insert(tempPro.begin(), symbolToProductionsPair.first );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; productions.insert(tempPro);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; j = i+1;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; i++;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> tempPro(ebnfProduction.begin()+j, ebnfProduction.begin()+i);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; tempPro.insert(tempPro.begin(), symbolToProductionsPair.first );</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; productions.insert(tempPro);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; symbolToProductionsPair.second.clear();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; symbolToProductionsPair.second = productions;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
168
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00297">297</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
169
+ <div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;{</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;symbolToProductionsPair : grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">GrammarBase::Productions</a> productions;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">//GrammarBase::Productions Originalproductions = symbolToProductionsPair.second;</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> ebnfProduction : symbolToProductionsPair.second)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">size_t</span> i = 1;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">size_t</span> j = 1;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">while</span> (i &lt; ebnfProduction.size())</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i].kind) == <span class="stringliteral">&quot;|&quot;</span>)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> tempPro(ebnfProduction.begin()+j, ebnfProduction.begin()+i);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; tempPro.insert(tempPro.begin(), symbolToProductionsPair.first );</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; productions.insert(tempPro);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; j = i+1;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; i++;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> tempPro(ebnfProduction.begin()+j, ebnfProduction.begin()+i);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; tempPro.insert(tempPro.begin(), symbolToProductionsPair.first );</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; productions.insert(tempPro);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; symbolToProductionsPair.second.clear();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; symbolToProductionsPair.second = productions;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;}</div><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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a755024745a77509d2f07867be8245a4d"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">SVF::GrammarBase::Productions</a></div><div class="ttdeci">SymbolSet&lt; Production &gt; Productions</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00157">CFLGrammar.h:157</a></div></div>
171
- <div class="ttc" id="classSVF_1_1GrammarBase_html_ac8ecc4293c5a63d2d30d0ca0832217d3"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">SVF::GrammarBase::kind2Str</a></div><div class="ttdeci">std::string kind2Str(Kind kind) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00099">CFLGrammar.cpp:99</a></div></div>
171
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_ac8ecc4293c5a63d2d30d0ca0832217d3"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">SVF::GrammarBase::kind2Str</a></div><div class="ttdeci">std::string kind2Str(Kind kind) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00103">CFLGrammar.cpp:103</a></div></div>
172
172
  <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&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
173
173
  </div><!-- fragment -->
174
174
  </div>
@@ -207,8 +207,8 @@ Private Member Functions</h2></td></tr>
207
207
  </table>
208
208
  </div><div class="memdoc">
209
209
 
210
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00457">457</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
211
- <div class="fragment"><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> symProdPair: grammar)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> prod: symProdPair.second)</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (rule == prod)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> symProdPair.first;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> symbol = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> symbol;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;}</div><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#l00085">SVFBasicTypes.h:85</a></div></div>
210
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00458">458</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
211
+ <div class="fragment"><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> symProdPair: grammar)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> prod: symProdPair.second)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">if</span> (rule == prod)</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">return</span> symProdPair.first;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> symbol = <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> symbol;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;}</div><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#l00085">SVFBasicTypes.h:85</a></div></div>
212
212
  <div class="ttc" id="structSVF_1_1GrammarBase_1_1Symbol_html"><div class="ttname"><a href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
213
213
  </div><!-- fragment -->
214
214
  </div>
@@ -240,18 +240,18 @@ Private Member Functions</h2></td></tr>
240
240
  <p>Add nonterminal to tranfer long rules to binary rules. </p>
241
241
  <p>Assign _attribute if target portion of the production contain more than 1 variable then X add no variable attribute if target only contain one variable attribute X share the same variable attribute </p>
242
242
 
243
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00091">91</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
244
- <div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a4405933cc8ed8cf30b98ee16fc14c112">GrammarBase::SymbolMap&lt;GrammarBase::Symbol, GrammarBase::Productions&gt;</a> new_grammar = {};</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> tempStr = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#afd29c476dad9728a10e19561e846f97e">removeFirstSymbol</a>(grammar);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">auto</span> rawProductions = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr : rawProductions)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">auto</span> head = *(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().find(itr.first));</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> rule: head.second)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (rule.size() &lt; 3) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> long_run = rule;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> first = long_run[0];</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; long_run.erase(long_run.begin());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">auto</span> it = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].find(rule);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].erase(it);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> X = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(new_grammar, long_run);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (X == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1))</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; X = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>(), long_run);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> ((X == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1)) == <span class="keyword">false</span>)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; rule = {first, X};</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].insert(rule);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; tempStr = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; std::ostringstream ss;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ss &lt;&lt; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">num_generator</a>();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; tempStr.append(ss.str());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GrammarBase::VariableAttribute&gt;</a> variableAttributeSet = {};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; long_run.size(); i++)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">GrammarBase::VariableAttribute</a> variableAttribute = long_run[i].variableAttribute;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> ( variableAttribute != 0)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; variableAttributeSet.insert(variableAttribute);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> ( variableAttributeSet.size() == 1)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; tempStr += <span class="stringliteral">&quot;_&quot;</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; tempStr += char(*variableAttributeSet.begin());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> tempSym = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(tempStr);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; rule = {first, tempSym};</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].insert(rule);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; X = tempSym;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; new_grammar[X] = {};</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> temp_p = long_run;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> RHX;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (long_run.size() ==2)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; new_grammar[X].insert(temp_p);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; long_run.clear();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; new_grammar[X].insert(long_run);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; RHX = X;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">while</span> (long_run.size() &gt; 2)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; first = long_run[0];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> prev_rule = long_run;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; long_run.erase(long_run.begin());</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; X = RHX;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; temp_p = long_run;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; RHX = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(new_grammar, long_run);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (RHX == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; RHX = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>(), long_run);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span>(RHX == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1))</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; tempStr = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; std::ostringstream ss;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; ss &lt;&lt; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">num_generator</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; tempStr.append(ss.str());</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GrammarBase::VariableAttribute&gt;</a> variableAttributeSet = {};</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; long_run.size(); i++)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">GrammarBase::VariableAttribute</a> variableAttribute = long_run[i].variableAttribute;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span> ( variableAttribute != 0)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; variableAttributeSet.insert(variableAttribute);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> ( variableAttributeSet.size() == 1)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; tempStr += <span class="stringliteral">&quot;_&quot;</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; tempStr += char(*variableAttributeSet.begin());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> tempSym = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(tempStr);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">auto</span> it = new_grammar[X].find(prev_rule);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; new_grammar[X].erase(it);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; new_grammar[X].insert({first, tempSym});</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; new_grammar[tempSym].insert(long_run);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; RHX = tempSym;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> new_head : new_grammar)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> prod : new_head.second)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">auto</span> it = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[new_head.first].find(prod);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (it == grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[new_head.first].end())</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[new_head.first].insert(prod);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFGNormalizer_html_afd29c476dad9728a10e19561e846f97e"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#afd29c476dad9728a10e19561e846f97e">SVF::CFGNormalizer::removeFirstSymbol</a></div><div class="ttdeci">void removeFirstSymbol(CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00497">CFGNormalizer.cpp:497</a></div></div>
245
- <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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
246
- <div class="ttc" id="classSVF_1_1CFLGrammar_html_a2494806a1282de3d7f6b588f7d6cc83e"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">SVF::CFLGrammar::num_generator</a></div><div class="ttdeci">const u32_t num_generator()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00375">CFLGrammar.h:375</a></div></div>
243
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00092">92</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
244
+ <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a4405933cc8ed8cf30b98ee16fc14c112">GrammarBase::SymbolMap&lt;GrammarBase::Symbol, GrammarBase::Productions&gt;</a> new_grammar = {};</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> tempStr = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#afd29c476dad9728a10e19561e846f97e">removeFirstSymbol</a>(grammar);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">auto</span> rawProductions = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr : rawProductions)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">auto</span> head = *(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().find(itr.first));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> rule: head.second)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> (rule.size() &lt; 3) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> long_run = rule;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> first = long_run[0];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; long_run.erase(long_run.begin());</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">auto</span> it = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].find(rule);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].erase(it);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> X = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(new_grammar, long_run);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (X == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; X = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>(), long_run);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> ((X == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1)) == <span class="keyword">false</span>)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; rule = {first, X};</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].insert(rule);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; tempStr = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::ostringstream ss;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; ss &lt;&lt; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">num_generator</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; tempStr.append(ss.str());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GrammarBase::VariableAttribute&gt;</a> variableAttributeSet = {};</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; long_run.size(); i++)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">GrammarBase::VariableAttribute</a> variableAttribute = long_run[i].variableAttribute;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> ( variableAttribute != 0)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; variableAttributeSet.insert(variableAttribute);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> ( variableAttributeSet.size() == 1)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; tempStr += <span class="stringliteral">&quot;_&quot;</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; tempStr += char(*variableAttributeSet.begin());</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> tempSym = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(tempStr);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rule = {first, tempSym};</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].insert(rule);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; X = tempSym;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; new_grammar[X] = {};</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> temp_p = long_run;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> RHX;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (long_run.size() ==2)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; new_grammar[X].insert(temp_p);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; long_run.clear();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; new_grammar[X].insert(long_run);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; RHX = X;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">while</span> (long_run.size() &gt; 2)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; first = long_run[0];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> prev_rule = long_run;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; long_run.erase(long_run.begin());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; X = RHX;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; temp_p = long_run;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; RHX = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(new_grammar, long_run);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (RHX == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; RHX = <a class="code" href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">check_head</a>(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>(), long_run);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(RHX == <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>(-1))</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; tempStr = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; std::ostringstream ss;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; ss &lt;&lt; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">num_generator</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; tempStr.append(ss.str());</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GrammarBase::VariableAttribute&gt;</a> variableAttributeSet = {};</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; long_run.size(); i++)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">GrammarBase::VariableAttribute</a> variableAttribute = long_run[i].variableAttribute;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> ( variableAttribute != 0)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; variableAttributeSet.insert(variableAttribute);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> ( variableAttributeSet.size() == 1)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; tempStr += <span class="stringliteral">&quot;_&quot;</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; tempStr += char(*variableAttributeSet.begin());</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> tempSym = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(tempStr);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">auto</span> it = new_grammar[X].find(prev_rule);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; new_grammar[X].erase(it);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; new_grammar[X].insert({first, tempSym});</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; new_grammar[tempSym].insert(long_run);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; RHX = tempSym;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> new_head : new_grammar)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> prod : new_head.second)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">auto</span> it = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[new_head.first].find(prod);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (it == grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[new_head.first].end())</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[new_head.first].insert(prod);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFGNormalizer_html_afd29c476dad9728a10e19561e846f97e"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#afd29c476dad9728a10e19561e846f97e">SVF::CFGNormalizer::removeFirstSymbol</a></div><div class="ttdeci">void removeFirstSymbol(CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00498">CFGNormalizer.cpp:498</a></div></div>
245
+ <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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
246
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html_a2494806a1282de3d7f6b588f7d6cc83e"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">SVF::CFLGrammar::num_generator</a></div><div class="ttdeci">const u32_t num_generator()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00388">CFLGrammar.h:388</a></div></div>
247
247
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a4405933cc8ed8cf30b98ee16fc14c112"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a4405933cc8ed8cf30b98ee16fc14c112">SVF::GrammarBase::SymbolMap</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; SymbolMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00150">CFLGrammar.h:150</a></div></div>
248
248
  <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#l00085">SVFBasicTypes.h:85</a></div></div>
249
249
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a716ce662e6a3f2febf3ab378c4217759"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">SVF::GrammarBase::VariableAttribute</a></div><div class="ttdeci">u32_t VariableAttribute</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00041">CFLGrammar.h:41</a></div></div>
250
250
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
251
- <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>
251
+ <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#l00249">CFLGrammar.cpp:249</a></div></div>
252
252
  <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&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
253
253
  <div class="ttc" id="structSVF_1_1GrammarBase_1_1Symbol_html"><div class="ttname"><a href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
254
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_afe01de5c8333e4ba436adbdc0e99e3cc"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">SVF::CFGNormalizer::check_head</a></div><div class="ttdeci">GrammarBase::Symbol check_head(GrammarBase::SymbolMap&lt; GrammarBase::Symbol, GrammarBase::Productions &gt; &amp;grammar, GrammarBase::Production &amp;rule)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00457">CFGNormalizer.cpp:457</a></div></div>
254
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_afe01de5c8333e4ba436adbdc0e99e3cc"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#afe01de5c8333e4ba436adbdc0e99e3cc">SVF::CFGNormalizer::check_head</a></div><div class="ttdeci">GrammarBase::Symbol check_head(GrammarBase::SymbolMap&lt; GrammarBase::Symbol, GrammarBase::Productions &gt; &amp;grammar, GrammarBase::Production &amp;rule)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00458">CFGNormalizer.cpp:458</a></div></div>
255
255
  <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>
256
256
  </div><!-- fragment -->
257
257
  </div>
@@ -296,9 +296,9 @@ Private Member Functions</h2></td></tr>
296
296
  </table>
297
297
  </div><div class="memdoc">
298
298
 
299
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00282">282</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
300
- <div class="fragment"><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordtype">int</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = i;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">while</span> (index &gt;= 0)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(prod[index].kind) == <span class="stringliteral">&quot;(&quot;</span>)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; index--;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div><div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
301
- <div class="ttc" id="classSVF_1_1GrammarBase_html_ac8ecc4293c5a63d2d30d0ca0832217d3"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">SVF::GrammarBase::kind2Str</a></div><div class="ttdeci">std::string kind2Str(Kind kind) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00099">CFLGrammar.cpp:99</a></div></div>
299
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00283">283</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
300
+ <div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;{</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">int</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = i;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">while</span> (index &gt;= 0)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(prod[index].kind) == <span class="stringliteral">&quot;(&quot;</span>)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; index--;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div><div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
301
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_ac8ecc4293c5a63d2d30d0ca0832217d3"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">SVF::GrammarBase::kind2Str</a></div><div class="ttdeci">std::string kind2Str(Kind kind) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00103">CFLGrammar.cpp:103</a></div></div>
302
302
  </div><!-- fragment -->
303
303
  </div>
304
304
  </div>
@@ -342,20 +342,20 @@ Private Member Functions</h2></td></tr>
342
342
  <p>insert second rule for '*' X -&gt; X E for '+' X -&gt; E</p>
343
343
  <p>Insert Back the Group </p>
344
344
 
345
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00326">326</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
346
- <div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map&lt;std::string, std::string&gt;</a> newProductions;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> tempNonterminal = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;symbolToProductionsPair : grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">GrammarBase::Productions</a> productions = symbolToProductionsPair.second;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> ebnfProduction : symbolToProductionsPair.second)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordtype">size_t</span> i = 1;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">while</span> (i &lt; ebnfProduction.size())</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> signGroupStart = -1;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i].kind) == <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>(1, sign))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; assert(i != 1 &amp;&amp; <span class="stringliteral">&quot;sign in grammar associate with no symbol&quot;</span>);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i - 1].kind) != <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>(1, <span class="charliteral">&#39;)&#39;</span>))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; signGroupStart = i - 1;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; signGroupStart = <a class="code" href="classSVF_1_1CFGNormalizer.html#a8eddaa57527c0e5e538b1d207da7adc0">ebnfBracketMatch</a>(ebnfProduction, i, grammar);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> groupString = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = signGroupStart; j &lt; i; j++)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; groupString.append(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[j].kind));</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; groupString.append(<span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; groupString.append(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i].kind));</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span> (newProductions.find(groupString) != newProductions.end())</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; productions.erase(ebnfProduction);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; ebnfProduction.erase(ebnfProduction.begin() + signGroupStart, ebnfProduction.begin() + i + 1);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; ebnfProduction.insert(ebnfProduction.begin() + signGroupStart, grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(newProductions[groupString]));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; productions.insert(ebnfProduction);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( (signGroupStart == 1) &amp;&amp; (i == ebnfProduction.size() -1))</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; newProductions[groupString] = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[0].kind);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; productions.erase(ebnfProduction);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; ebnfProduction.erase(ebnfProduction.begin() + signGroupStart, ebnfProduction.begin() + i + 1);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; tempNonterminal = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; std::ostringstream ss;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; ss &lt;&lt; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">num_generator</a>();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; tempNonterminal.append(ss.str());</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> tempSym = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(tempNonterminal);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; productions.erase(ebnfProduction);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; ebnfProduction.erase(ebnfProduction.begin() + signGroupStart, ebnfProduction.begin() + i + 1);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; ebnfProduction.insert(ebnfProduction.begin() + signGroupStart, tempSym);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; newProductions[groupString] = tempNonterminal;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; productions.insert(ebnfProduction);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; i = signGroupStart;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; i++;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; symbolToProductionsPair.second = productions;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> rep: newProductions)</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> new_nonterminal = rep.second;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> temp_list = {grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal), grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;epsilon&quot;</span>)};</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal)].insert(temp_list);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; temp_list = {grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal)};</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (sign == <span class="charliteral">&#39;*&#39;</span> || sign == <span class="charliteral">&#39;?&#39;</span>)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> normalProd;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a4b9b6c676ce6514ae725f543b1e07acf">strTrans</a>(rep.first, grammar, normalProd);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> withoutSign = {};</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (sign == <span class="charliteral">&#39;*&#39;</span>)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;word : normalProd)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;*&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;(&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;)&quot;</span>))</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; withoutSign.push_back(word);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; withoutSign.push_back(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(rep.second));</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (sign == <span class="charliteral">&#39;?&#39;</span>)</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;word : normalProd)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;?&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;(&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;)&quot;</span>))</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; withoutSign.push_back(word);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; temp_list.insert(temp_list.end(), withoutSign.begin(), withoutSign.end());</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal)].insert(temp_list);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
347
- <div class="ttc" id="classSVF_1_1CFLGrammar_html_a2494806a1282de3d7f6b588f7d6cc83e"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">SVF::CFLGrammar::num_generator</a></div><div class="ttdeci">const u32_t num_generator()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00375">CFLGrammar.h:375</a></div></div>
345
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00327">327</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
346
+ <div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map&lt;std::string, std::string&gt;</a> newProductions;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> tempNonterminal = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;symbolToProductionsPair : grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">GrammarBase::Productions</a> productions = symbolToProductionsPair.second;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> ebnfProduction : symbolToProductionsPair.second)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordtype">size_t</span> i = 1;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">while</span> (i &lt; ebnfProduction.size())</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> signGroupStart = -1;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i].kind) == <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>(1, sign))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; assert(i != 1 &amp;&amp; <span class="stringliteral">&quot;sign in grammar associate with no symbol&quot;</span>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span> (grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i - 1].kind) != <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>(1, <span class="charliteral">&#39;)&#39;</span>))</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; signGroupStart = i - 1;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; signGroupStart = <a class="code" href="classSVF_1_1CFGNormalizer.html#a8eddaa57527c0e5e538b1d207da7adc0">ebnfBracketMatch</a>(ebnfProduction, i, grammar);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> groupString = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = signGroupStart; j &lt; i; j++)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; groupString.append(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[j].kind));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; groupString.append(<span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; groupString.append(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[i].kind));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (newProductions.find(groupString) != newProductions.end())</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; productions.erase(ebnfProduction);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; ebnfProduction.erase(ebnfProduction.begin() + signGroupStart, ebnfProduction.begin() + i + 1);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; ebnfProduction.insert(ebnfProduction.begin() + signGroupStart, grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(newProductions[groupString]));</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; productions.insert(ebnfProduction);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( (signGroupStart == 1) &amp;&amp; (i == ebnfProduction.size() -1))</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; newProductions[groupString] = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">kind2Str</a>(ebnfProduction[0].kind);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; productions.erase(ebnfProduction);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ebnfProduction.erase(ebnfProduction.begin() + signGroupStart, ebnfProduction.begin() + i + 1);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; tempNonterminal = <span class="stringliteral">&quot;X&quot;</span>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; std::ostringstream ss;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; ss &lt;&lt; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">num_generator</a>();</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; tempNonterminal.append(ss.str());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> tempSym = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a63389968c8d246a84562a8d17e08790b">insertNonTerminalSymbol</a>(tempNonterminal);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; productions.erase(ebnfProduction);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; ebnfProduction.erase(ebnfProduction.begin() + signGroupStart, ebnfProduction.begin() + i + 1);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; ebnfProduction.insert(ebnfProduction.begin() + signGroupStart, tempSym);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; newProductions[groupString] = tempNonterminal;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; productions.insert(ebnfProduction);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; i = signGroupStart;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; i++;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; symbolToProductionsPair.second = productions;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> rep: newProductions)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> new_nonterminal = rep.second;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> temp_list = {grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal), grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;epsilon&quot;</span>)};</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal)].insert(temp_list);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; temp_list = {grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal)};</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (sign == <span class="charliteral">&#39;*&#39;</span> || sign == <span class="charliteral">&#39;?&#39;</span>)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> normalProd;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a4b9b6c676ce6514ae725f543b1e07acf">strTrans</a>(rep.first, grammar, normalProd);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> withoutSign = {};</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (sign == <span class="charliteral">&#39;*&#39;</span>)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;word : normalProd)</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;*&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;(&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;)&quot;</span>))</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; withoutSign.push_back(word);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; withoutSign.push_back(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(rep.second));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> (sign == <span class="charliteral">&#39;?&#39;</span>)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;word : normalProd)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;?&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;(&quot;</span>) &amp;&amp; word != grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(<span class="stringliteral">&quot;)&quot;</span>))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; withoutSign.push_back(word);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; temp_list.insert(temp_list.end(), withoutSign.begin(), withoutSign.end());</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(new_nonterminal)].insert(temp_list);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;}</div><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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
347
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html_a2494806a1282de3d7f6b588f7d6cc83e"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#a2494806a1282de3d7f6b588f7d6cc83e">SVF::CFLGrammar::num_generator</a></div><div class="ttdeci">const u32_t num_generator()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00388">CFLGrammar.h:388</a></div></div>
348
348
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
349
349
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a755024745a77509d2f07867be8245a4d"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">SVF::GrammarBase::Productions</a></div><div class="ttdeci">SymbolSet&lt; Production &gt; Productions</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00157">CFLGrammar.h:157</a></div></div>
350
350
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
351
- <div class="ttc" id="classSVF_1_1GrammarBase_html_ac8ecc4293c5a63d2d30d0ca0832217d3"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">SVF::GrammarBase::kind2Str</a></div><div class="ttdeci">std::string kind2Str(Kind kind) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00099">CFLGrammar.cpp:99</a></div></div>
352
- <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>
351
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_ac8ecc4293c5a63d2d30d0ca0832217d3"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac8ecc4293c5a63d2d30d0ca0832217d3">SVF::GrammarBase::kind2Str</a></div><div class="ttdeci">std::string kind2Str(Kind kind) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00103">CFLGrammar.cpp:103</a></div></div>
352
+ <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#l00249">CFLGrammar.cpp:249</a></div></div>
353
353
  <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&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
354
354
  <div class="ttc" id="structSVF_1_1GrammarBase_1_1Symbol_html"><div class="ttname"><a href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
355
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a4b9b6c676ce6514ae725f543b1e07acf"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a4b9b6c676ce6514ae725f543b1e07acf">SVF::CFGNormalizer::strTrans</a></div><div class="ttdeci">void strTrans(std::string strPro, CFLGrammar *grammar, GrammarBase::Production &amp;normalProd)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00438">CFGNormalizer.cpp:438</a></div></div>
355
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a4b9b6c676ce6514ae725f543b1e07acf"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a4b9b6c676ce6514ae725f543b1e07acf">SVF::CFGNormalizer::strTrans</a></div><div class="ttdeci">void strTrans(std::string strPro, CFLGrammar *grammar, GrammarBase::Production &amp;normalProd)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00439">CFGNormalizer.cpp:439</a></div></div>
356
356
  <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>
357
- <div class="ttc" id="classSVF_1_1GrammarBase_html_a5c081c6ff0501fc91b71352995d6d9dc"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">SVF::GrammarBase::str2Symbol</a></div><div class="ttdeci">Symbol str2Symbol(const std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00070">CFLGrammar.cpp:70</a></div></div>
358
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a8eddaa57527c0e5e538b1d207da7adc0"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a8eddaa57527c0e5e538b1d207da7adc0">SVF::CFGNormalizer::ebnfBracketMatch</a></div><div class="ttdeci">int ebnfBracketMatch(GrammarBase::Production &amp;prod, int i, CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00282">CFGNormalizer.cpp:282</a></div></div>
357
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_a5c081c6ff0501fc91b71352995d6d9dc"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">SVF::GrammarBase::str2Symbol</a></div><div class="ttdeci">Symbol str2Symbol(const std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00074">CFLGrammar.cpp:74</a></div></div>
358
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a8eddaa57527c0e5e538b1d207da7adc0"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a8eddaa57527c0e5e538b1d207da7adc0">SVF::CFGNormalizer::ebnfBracketMatch</a></div><div class="ttdeci">int ebnfBracketMatch(GrammarBase::Production &amp;prod, int i, CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00283">CFGNormalizer.cpp:283</a></div></div>
359
359
  </div><!-- fragment -->
360
360
  </div>
361
361
  </div>
@@ -388,13 +388,13 @@ Private Member Functions</h2></td></tr>
388
388
  <p>Expand every variable attribute in rawProductions of grammarbase. </p>
389
389
  <p>rawProductions production does not include lhs so append to the begin of the production </p>
390
390
 
391
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00061">61</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
392
- <div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> nodeSet = {};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> pair: kind2AttrsMap)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> attri: pair.second)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; nodeSet.insert(attri);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> symProdsPair: grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> prod: symProdsPair.second)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> tempP = prod;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; tempP.insert(tempP.begin(), symProdsPair.first);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">GrammarBase::Productions</a> normalProds;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7">getFilledProductions</a>(tempP, nodeSet, grammar, normalProds);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> filledProd : normalProds)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#ad08f183a1b8ca69201f965f224e92950">insertToCFLGrammar</a>(grammar, filledProd);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> grammar;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00122">SVFBasicTypes.h:122</a></div></div>
393
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_ad08f183a1b8ca69201f965f224e92950"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#ad08f183a1b8ca69201f965f224e92950">SVF::CFGNormalizer::insertToCFLGrammar</a></div><div class="ttdeci">void insertToCFLGrammar(CFLGrammar *grammar, GrammarBase::Production &amp;prod)</div><div class="ttdoc">Based on prod size to add on suitable member field of grammar. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00474">CFGNormalizer.cpp:474</a></div></div>
394
- <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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
391
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00062">62</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
392
+ <div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> nodeSet = {};</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> pair: kind2AttrsMap)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> attri: pair.second)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; nodeSet.insert(attri);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> symProdsPair: grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> prod: symProdsPair.second)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> tempP = prod;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; tempP.insert(tempP.begin(), symProdsPair.first);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">GrammarBase::Productions</a> normalProds;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7">getFilledProductions</a>(tempP, nodeSet, grammar, normalProds);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> filledProd : normalProds)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#ad08f183a1b8ca69201f965f224e92950">insertToCFLGrammar</a>(grammar, filledProd);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> grammar;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00122">SVFBasicTypes.h:122</a></div></div>
393
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_ad08f183a1b8ca69201f965f224e92950"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#ad08f183a1b8ca69201f965f224e92950">SVF::CFGNormalizer::insertToCFLGrammar</a></div><div class="ttdeci">void insertToCFLGrammar(CFLGrammar *grammar, GrammarBase::Production &amp;prod)</div><div class="ttdoc">Based on prod size to add on suitable member field of grammar. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00475">CFGNormalizer.cpp:475</a></div></div>
394
+ <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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
395
395
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a755024745a77509d2f07867be8245a4d"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a755024745a77509d2f07867be8245a4d">SVF::GrammarBase::Productions</a></div><div class="ttdeci">SymbolSet&lt; Production &gt; Productions</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00157">CFLGrammar.h:157</a></div></div>
396
396
  <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&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
397
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_add319949e856049d3e898848a02a75b7"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7">SVF::CFGNormalizer::getFilledProductions</a></div><div class="ttdeci">void getFilledProductions(GrammarBase::Production &amp;prod, const NodeSet &amp;nodeSet, CFLGrammar *grammar, GrammarBase::Productions &amp;normalProds)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00224">CFGNormalizer.cpp:224</a></div></div>
397
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_add319949e856049d3e898848a02a75b7"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7">SVF::CFGNormalizer::getFilledProductions</a></div><div class="ttdeci">void getFilledProductions(GrammarBase::Production &amp;prod, const NodeSet &amp;nodeSet, CFLGrammar *grammar, GrammarBase::Productions &amp;normalProds)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00225">CFGNormalizer.cpp:225</a></div></div>
398
398
  </div><!-- fragment -->
399
399
  </div>
400
400
  </div>
@@ -447,15 +447,15 @@ Private Member Functions</h2></td></tr>
447
447
  <p>Get the first encounter variable attribute to expand</p>
448
448
  <p>Check whether all symbol expanded </p>
449
449
 
450
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00224">224</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
451
- <div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; normalProds.clear();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1CFLFIFOWorkList.html">CFLFIFOWorkList&lt;GrammarBase::Production&gt;</a> worklist;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#af043947e65b5a900df799825f140f75a">push</a>(prod);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">while</span>( worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#aa0ce832f5eeae74d52260fd8954d545f">empty</a>() == <a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a> )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> currentProduction = worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#a8ccf884ed6bc0d172f3c2999717f9cff">pop</a>();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">GrammarBase::VariableAttribute</a> currentVariableAttribute = 0;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// GrammarBase::Kind baseKind;</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> ( <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> &amp;symbol : currentProduction )</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> ( currentVariableAttribute == 0 )</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; currentVariableAttribute = symbol.variableAttribute;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// baseKind = symbol.kind;</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> ( currentVariableAttribute == 0)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; normalProds.insert(currentProduction);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">//*(kind2AttriMap.find(baseKind));</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">//for (auto attribute : nodeSet.second)</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> attribute : nodeSet)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> fillingProduction = currentProduction;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">for</span> ( <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> &amp;symbol : fillingProduction )</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> ( symbol.variableAttribute == currentVariableAttribute)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; symbol.attribute = attribute;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; symbol.variableAttribute = 0;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">bool</span> continueToFill = <span class="keyword">false</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">for</span> ( <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> &amp;symbol : fillingProduction )</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> ( symbol.variableAttribute != 0 )</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; continueToFill = <span class="keyword">true</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> ( continueToFill == <span class="keyword">false</span>)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; normalProds.insert(fillingProduction);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#af043947e65b5a900df799825f140f75a">push</a>(fillingProduction);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div><div class="ttc" id="cJSON_8cpp_html_a65e9886d74aaee76545e83dd09011727"><div class="ttname"><a href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a></div><div class="ttdeci">#define false</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00070">cJSON.cpp:70</a></div></div>
450
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00225">225</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
451
+ <div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; normalProds.clear();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1CFLFIFOWorkList.html">CFLFIFOWorkList&lt;GrammarBase::Production&gt;</a> worklist;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#af043947e65b5a900df799825f140f75a">push</a>(prod);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">while</span>( worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#aa0ce832f5eeae74d52260fd8954d545f">empty</a>() == <a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a> )</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> currentProduction = worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#a8ccf884ed6bc0d172f3c2999717f9cff">pop</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">GrammarBase::VariableAttribute</a> currentVariableAttribute = 0;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// GrammarBase::Kind baseKind;</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">for</span> ( <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> &amp;symbol : currentProduction )</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> ( currentVariableAttribute == 0 )</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; currentVariableAttribute = symbol.variableAttribute;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// baseKind = symbol.kind;</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> ( currentVariableAttribute == 0)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; normalProds.insert(currentProduction);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">//*(kind2AttriMap.find(baseKind));</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">//for (auto attribute : nodeSet.second)</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> attribute : nodeSet)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> fillingProduction = currentProduction;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">for</span> ( <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> &amp;symbol : fillingProduction )</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> ( symbol.variableAttribute == currentVariableAttribute)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; symbol.attribute = attribute;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; symbol.variableAttribute = 0;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordtype">bool</span> continueToFill = <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">for</span> ( <a class="code" href="structSVF_1_1GrammarBase_1_1Symbol.html">GrammarBase::Symbol</a> &amp;symbol : fillingProduction )</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> ( symbol.variableAttribute != 0 )</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; continueToFill = <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> ( continueToFill == <span class="keyword">false</span>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; normalProds.insert(fillingProduction);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; worklist.<a class="code" href="classSVF_1_1CFLFIFOWorkList.html#af043947e65b5a900df799825f140f75a">push</a>(fillingProduction);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</div><div class="ttc" id="cJSON_8cpp_html_a65e9886d74aaee76545e83dd09011727"><div class="ttname"><a href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a></div><div class="ttdeci">#define false</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00070">cJSON.cpp:70</a></div></div>
452
452
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a716ce662e6a3f2febf3ab378c4217759"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a716ce662e6a3f2febf3ab378c4217759">SVF::GrammarBase::VariableAttribute</a></div><div class="ttdeci">u32_t VariableAttribute</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00041">CFLGrammar.h:41</a></div></div>
453
- <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html_a8ccf884ed6bc0d172f3c2999717f9cff"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html#a8ccf884ed6bc0d172f3c2999717f9cff">SVF::CFLFIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00431">CFLGrammar.h:431</a></div></div>
454
- <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html_aa0ce832f5eeae74d52260fd8954d545f"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html#aa0ce832f5eeae74d52260fd8954d545f">SVF::CFLFIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00403">CFLGrammar.h:403</a></div></div>
453
+ <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html_a8ccf884ed6bc0d172f3c2999717f9cff"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html#a8ccf884ed6bc0d172f3c2999717f9cff">SVF::CFLFIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00444">CFLGrammar.h:444</a></div></div>
454
+ <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html_aa0ce832f5eeae74d52260fd8954d545f"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html#aa0ce832f5eeae74d52260fd8954d545f">SVF::CFLFIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00416">CFLGrammar.h:416</a></div></div>
455
455
  <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&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
456
456
  <div class="ttc" id="structSVF_1_1GrammarBase_1_1Symbol_html"><div class="ttname"><a href="structSVF_1_1GrammarBase_1_1Symbol.html">SVF::GrammarBase::Symbol</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00042">CFLGrammar.h:42</a></div></div>
457
- <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html">SVF::CFLFIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00394">CFLGrammar.h:394</a></div></div>
458
- <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html_af043947e65b5a900df799825f140f75a"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html#af043947e65b5a900df799825f140f75a">SVF::CFLFIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00416">CFLGrammar.h:416</a></div></div>
457
+ <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html">SVF::CFLFIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00407">CFLGrammar.h:407</a></div></div>
458
+ <div class="ttc" id="classSVF_1_1CFLFIFOWorkList_html_af043947e65b5a900df799825f140f75a"><div class="ttname"><a href="classSVF_1_1CFLFIFOWorkList.html#af043947e65b5a900df799825f140f75a">SVF::CFLFIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00429">CFLGrammar.h:429</a></div></div>
459
459
  </div><!-- fragment -->
460
460
  </div>
461
461
  </div>
@@ -495,12 +495,12 @@ Private Member Functions</h2></td></tr>
495
495
 
496
496
  <p>Based on prod size to add on suitable member field of grammar. </p>
497
497
 
498
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00474">474</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
499
- <div class="fragment"><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;{</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (prod.size() == 2)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span> ((std::find(prod.begin(), prod.end(), grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(<span class="stringliteral">&quot;epsilon&quot;</span>)) != prod.end()))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (std::find(grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().begin(), grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().end(), prod) == grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().end())</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().insert(prod);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#afefc9b90be5cf275f476bb7c3f1c74ce">getSingleRHS2Prods</a>()[prod[1]].insert(prod);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span> (prod.size() == 3)</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#ac0f09c94e9c6efc00398ed7d5ca1fe0f">getFirstRHS2Prods</a>()[prod[1]].insert(prod);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#aad22309781ec1a5ab247097dcaa6a0b8">getSecondRHS2Prods</a>()[prod[2]].insert(prod);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLGrammar_html_a8d6292a55da24336d968e20c7ac288d9"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">SVF::CFLGrammar::getEpsilonProds</a></div><div class="ttdeci">Productions &amp; getEpsilonProds()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00295">CFLGrammar.h:295</a></div></div>
500
- <div class="ttc" id="classSVF_1_1CFLGrammar_html_ac0f09c94e9c6efc00398ed7d5ca1fe0f"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#ac0f09c94e9c6efc00398ed7d5ca1fe0f">SVF::CFLGrammar::getFirstRHS2Prods</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getFirstRHS2Prods()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00305">CFLGrammar.h:305</a></div></div>
501
- <div class="ttc" id="classSVF_1_1CFLGrammar_html_aad22309781ec1a5ab247097dcaa6a0b8"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#aad22309781ec1a5ab247097dcaa6a0b8">SVF::CFLGrammar::getSecondRHS2Prods</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getSecondRHS2Prods()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00310">CFLGrammar.h:310</a></div></div>
498
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00475">475</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
499
+ <div class="fragment"><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;{</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (prod.size() == 2)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> ((std::find(prod.begin(), prod.end(), grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">str2Kind</a>(<span class="stringliteral">&quot;epsilon&quot;</span>)) != prod.end()))</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (std::find(grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().begin(), grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().end(), prod) == grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().end())</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">getEpsilonProds</a>().insert(prod);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#afefc9b90be5cf275f476bb7c3f1c74ce">getSingleRHS2Prods</a>()[prod[1]].insert(prod);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (prod.size() == 3)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#ac0f09c94e9c6efc00398ed7d5ca1fe0f">getFirstRHS2Prods</a>()[prod[1]].insert(prod);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1CFLGrammar.html#aad22309781ec1a5ab247097dcaa6a0b8">getSecondRHS2Prods</a>()[prod[2]].insert(prod);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div><div class="ttc" id="classSVF_1_1CFLGrammar_html_a8d6292a55da24336d968e20c7ac288d9"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#a8d6292a55da24336d968e20c7ac288d9">SVF::CFLGrammar::getEpsilonProds</a></div><div class="ttdeci">Productions &amp; getEpsilonProds()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00308">CFLGrammar.h:308</a></div></div>
500
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html_ac0f09c94e9c6efc00398ed7d5ca1fe0f"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#ac0f09c94e9c6efc00398ed7d5ca1fe0f">SVF::CFLGrammar::getFirstRHS2Prods</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getFirstRHS2Prods()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00318">CFLGrammar.h:318</a></div></div>
501
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html_aad22309781ec1a5ab247097dcaa6a0b8"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#aad22309781ec1a5ab247097dcaa6a0b8">SVF::CFLGrammar::getSecondRHS2Prods</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getSecondRHS2Prods()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00323">CFLGrammar.h:323</a></div></div>
502
502
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ad2d56d8cdc4539d4201d1995fb36e772"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad2d56d8cdc4539d4201d1995fb36e772">SVF::GrammarBase::str2Kind</a></div><div class="ttdeci">Kind str2Kind(std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00055">CFLGrammar.cpp:55</a></div></div>
503
- <div class="ttc" id="classSVF_1_1CFLGrammar_html_afefc9b90be5cf275f476bb7c3f1c74ce"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#afefc9b90be5cf275f476bb7c3f1c74ce">SVF::CFLGrammar::getSingleRHS2Prods</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getSingleRHS2Prods()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00300">CFLGrammar.h:300</a></div></div>
503
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html_afefc9b90be5cf275f476bb7c3f1c74ce"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html#afefc9b90be5cf275f476bb7c3f1c74ce">SVF::CFLGrammar::getSingleRHS2Prods</a></div><div class="ttdeci">SymbolMap&lt; Symbol, Productions &gt; &amp; getSingleRHS2Prods()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00313">CFLGrammar.h:313</a></div></div>
504
504
  </div><!-- fragment -->
505
505
  </div>
506
506
  </div>
@@ -523,25 +523,27 @@ Private Member Functions</h2></td></tr>
523
523
  <p>Binary Normal Form(BNF) normalization with variable attribute expanded. </p>
524
524
 
525
525
  <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00042">42</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
526
- <div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a> *grammar = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">setStartKind</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ae79b973ec24ba034e831a90285737a41">setTerminals</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a44232dfc5b9a13dfe9b72ff18634ab37">getTerminals</a>());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#afc9635e14b5871df457bf64fae6ad8cf">setNonterminals</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a04140ef06feee613506529fd8c23665e">getNonterminals</a>());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a37a31f03501a11e7951d56dbf1cb146a">setTotalKind</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a76e0969670709e24532756e56aafab19">getTotalKind</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a1e1bf1e32bcd7c68ce789c2f9f6327c0">setAttributeKinds</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a2620ded7573ebdb8b4595e199105ef0e">getAttrSyms</a>());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac5048e88477e9b937fffed628dc5e8e5">setKind2AttrsMap</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ae28fea79c05ba05fc8c2e67b194e42b9">getKind2AttrsMap</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a2eb6ab294093710ca1dc119836adff5a">setRawProductions</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#ad56aa4b7f6eba0c873ea18f83c398bc5">barReplace</a>(grammar);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a37f4a6a11af608439596752d20667648">ebnfSignReplace</a>(<span class="charliteral">&#39;*&#39;</span>, grammar);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a37f4a6a11af608439596752d20667648">ebnfSignReplace</a>(<span class="charliteral">&#39;?&#39;</span>, grammar);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a8906f8bfe0a4a431f355b825f15efbe0">ebnf_bin</a>(grammar);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#aec174ad01529a195b710b2f628f9c0d6">fillAttribute</a>(grammar, grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ae28fea79c05ba05fc8c2e67b194e42b9">getKind2AttrsMap</a>());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> grammar;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div><div class="ttc" id="classSVF_1_1GrammarBase_html_a2eb6ab294093710ca1dc119836adff5a"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a2eb6ab294093710ca1dc119836adff5a">SVF::GrammarBase::setRawProductions</a></div><div class="ttdeci">void setRawProductions(SymbolMap&lt; Symbol, Productions &gt; &amp;rawProductions)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00040">CFLGrammar.cpp:40</a></div></div>
526
+ <div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a> *grammar = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFLGrammar.html">CFLGrammar</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a1de2b9f6c39936afa8f821ca262deadd">setStartKind</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">getStartKind</a>());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ae79b973ec24ba034e831a90285737a41">setTerminals</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a44232dfc5b9a13dfe9b72ff18634ab37">getTerminals</a>());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#afc9635e14b5871df457bf64fae6ad8cf">setNonterminals</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a04140ef06feee613506529fd8c23665e">getNonterminals</a>());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ad87ca88d62e7bc3a189652c707a72e12">setEBNFSigns</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a51b55df841ae449ecf0888325c6e8c6a">getEBNFSigns</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a37a31f03501a11e7951d56dbf1cb146a">setTotalKind</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a76e0969670709e24532756e56aafab19">getTotalKind</a>());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a1e1bf1e32bcd7c68ce789c2f9f6327c0">setAttributeKinds</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a2620ded7573ebdb8b4595e199105ef0e">getAttrSyms</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ac5048e88477e9b937fffed628dc5e8e5">setKind2AttrsMap</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ae28fea79c05ba05fc8c2e67b194e42b9">getKind2AttrsMap</a>());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a2eb6ab294093710ca1dc119836adff5a">setRawProductions</a>(generalGrammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#ad56aa4b7f6eba0c873ea18f83c398bc5">barReplace</a>(grammar);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a37f4a6a11af608439596752d20667648">ebnfSignReplace</a>(<span class="charliteral">&#39;*&#39;</span>, grammar);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a37f4a6a11af608439596752d20667648">ebnfSignReplace</a>(<span class="charliteral">&#39;?&#39;</span>, grammar);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#a8906f8bfe0a4a431f355b825f15efbe0">ebnf_bin</a>(grammar);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1CFGNormalizer.html#aec174ad01529a195b710b2f628f9c0d6">fillAttribute</a>(grammar, grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#ae28fea79c05ba05fc8c2e67b194e42b9">getKind2AttrsMap</a>());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> grammar;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="classSVF_1_1GrammarBase_html_a2eb6ab294093710ca1dc119836adff5a"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a2eb6ab294093710ca1dc119836adff5a">SVF::GrammarBase::setRawProductions</a></div><div class="ttdeci">void setRawProductions(SymbolMap&lt; Symbol, Productions &gt; &amp;rawProductions)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00040">CFLGrammar.cpp:40</a></div></div>
527
527
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ac5048e88477e9b937fffed628dc5e8e5"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ac5048e88477e9b937fffed628dc5e8e5">SVF::GrammarBase::setKind2AttrsMap</a></div><div class="ttdeci">void setKind2AttrsMap(const Map&lt; Kind, Set&lt; Attribute &gt;&gt; &amp;kind2AttrsMap)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00045">CFLGrammar.cpp:45</a></div></div>
528
- <div class="ttc" id="classSVF_1_1CFLGrammar_html"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html">SVF::CFLGrammar</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00277">CFLGrammar.h:277</a></div></div>
528
+ <div class="ttc" id="classSVF_1_1CFLGrammar_html"><div class="ttname"><a href="classSVF_1_1CFLGrammar.html">SVF::CFLGrammar</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00290">CFLGrammar.h:290</a></div></div>
529
529
  <div class="ttc" id="classSVF_1_1GrammarBase_html_ae79b973ec24ba034e831a90285737a41"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ae79b973ec24ba034e831a90285737a41">SVF::GrammarBase::setTerminals</a></div><div class="ttdeci">void setTerminals(Map&lt; std::string, Kind &gt; &amp;terminals)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00175">CFLGrammar.h:175</a></div></div>
530
- <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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
531
- <div class="ttc" id="classSVF_1_1GrammarBase_html_a8921a7d7a006e31f13d88b8c808c931b"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">SVF::GrammarBase::getStartKind</a></div><div class="ttdeci">Kind getStartKind()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00195">CFLGrammar.h:195</a></div></div>
532
- <div class="ttc" id="classSVF_1_1GrammarBase_html_ae28fea79c05ba05fc8c2e67b194e42b9"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ae28fea79c05ba05fc8c2e67b194e42b9">SVF::GrammarBase::getKind2AttrsMap</a></div><div class="ttdeci">const Map&lt; Kind, Set&lt; Attribute &gt; &gt; &amp; getKind2AttrsMap() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00185">CFLGrammar.h:185</a></div></div>
530
+ <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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
531
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_ad87ca88d62e7bc3a189652c707a72e12"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ad87ca88d62e7bc3a189652c707a72e12">SVF::GrammarBase::setEBNFSigns</a></div><div class="ttdeci">void setEBNFSigns(Map&lt; std::string, Kind &gt; &amp;EBNFSigns)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00185">CFLGrammar.h:185</a></div></div>
532
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_a8921a7d7a006e31f13d88b8c808c931b"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a8921a7d7a006e31f13d88b8c808c931b">SVF::GrammarBase::getStartKind</a></div><div class="ttdeci">Kind getStartKind()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00205">CFLGrammar.h:205</a></div></div>
533
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_ae28fea79c05ba05fc8c2e67b194e42b9"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ae28fea79c05ba05fc8c2e67b194e42b9">SVF::GrammarBase::getKind2AttrsMap</a></div><div class="ttdeci">const Map&lt; Kind, Set&lt; Attribute &gt; &gt; &amp; getKind2AttrsMap() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00195">CFLGrammar.h:195</a></div></div>
533
534
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a04140ef06feee613506529fd8c23665e"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a04140ef06feee613506529fd8c23665e">SVF::GrammarBase::getNonterminals</a></div><div class="ttdeci">Map&lt; std::string, Kind &gt; &amp; getNonterminals()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00160">CFLGrammar.h:160</a></div></div>
534
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a8906f8bfe0a4a431f355b825f15efbe0"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a8906f8bfe0a4a431f355b825f15efbe0">SVF::CFGNormalizer::ebnf_bin</a></div><div class="ttdeci">void ebnf_bin(CFLGrammar *grammar)</div><div class="ttdoc">Add nonterminal to tranfer long rules to binary rules. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00091">CFGNormalizer.cpp:91</a></div></div>
535
- <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#l00200">CFLGrammar.h:200</a></div></div>
535
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a8906f8bfe0a4a431f355b825f15efbe0"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a8906f8bfe0a4a431f355b825f15efbe0">SVF::CFGNormalizer::ebnf_bin</a></div><div class="ttdeci">void ebnf_bin(CFLGrammar *grammar)</div><div class="ttdoc">Add nonterminal to tranfer long rules to binary rules. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00092">CFGNormalizer.cpp:92</a></div></div>
536
+ <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#l00210">CFLGrammar.h:210</a></div></div>
536
537
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a1e1bf1e32bcd7c68ce789c2f9f6327c0"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a1e1bf1e32bcd7c68ce789c2f9f6327c0">SVF::GrammarBase::setAttributeKinds</a></div><div class="ttdeci">void setAttributeKinds(const Set&lt; Kind &gt; &amp;attributeKind)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00050">CFLGrammar.cpp:50</a></div></div>
537
538
  <div class="ttc" id="classSVF_1_1GrammarBase_html_a44232dfc5b9a13dfe9b72ff18634ab37"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a44232dfc5b9a13dfe9b72ff18634ab37">SVF::GrammarBase::getTerminals</a></div><div class="ttdeci">Map&lt; std::string, Kind &gt; &amp; getTerminals()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00170">CFLGrammar.h:170</a></div></div>
538
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_aec174ad01529a195b710b2f628f9c0d6"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#aec174ad01529a195b710b2f628f9c0d6">SVF::CFGNormalizer::fillAttribute</a></div><div class="ttdeci">CFLGrammar * fillAttribute(CFLGrammar *grammar, const Map&lt; CFLGrammar::Kind, Set&lt; CFLGrammar::Attribute &gt;&gt; &amp;kind2AttrsMap)</div><div class="ttdoc">Expand every variable attribute in rawProductions of grammarbase. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00061">CFGNormalizer.cpp:61</a></div></div>
539
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_ad56aa4b7f6eba0c873ea18f83c398bc5"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#ad56aa4b7f6eba0c873ea18f83c398bc5">SVF::CFGNormalizer::barReplace</a></div><div class="ttdeci">void barReplace(CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00296">CFGNormalizer.cpp:296</a></div></div>
540
- <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#l00205">CFLGrammar.h:205</a></div></div>
541
- <div class="ttc" id="classSVF_1_1GrammarBase_html_a76e0969670709e24532756e56aafab19"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a76e0969670709e24532756e56aafab19">SVF::GrammarBase::getTotalKind</a></div><div class="ttdeci">Kind getTotalKind()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
542
- <div class="ttc" id="classSVF_1_1GrammarBase_html_a2620ded7573ebdb8b4595e199105ef0e"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a2620ded7573ebdb8b4595e199105ef0e">SVF::GrammarBase::getAttrSyms</a></div><div class="ttdeci">const Set&lt; Kind &gt; &amp; getAttrSyms() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00233">CFLGrammar.h:233</a></div></div>
539
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_aec174ad01529a195b710b2f628f9c0d6"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#aec174ad01529a195b710b2f628f9c0d6">SVF::CFGNormalizer::fillAttribute</a></div><div class="ttdeci">CFLGrammar * fillAttribute(CFLGrammar *grammar, const Map&lt; CFLGrammar::Kind, Set&lt; CFLGrammar::Attribute &gt;&gt; &amp;kind2AttrsMap)</div><div class="ttdoc">Expand every variable attribute in rawProductions of grammarbase. </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00062">CFGNormalizer.cpp:62</a></div></div>
540
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_ad56aa4b7f6eba0c873ea18f83c398bc5"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#ad56aa4b7f6eba0c873ea18f83c398bc5">SVF::CFGNormalizer::barReplace</a></div><div class="ttdeci">void barReplace(CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00297">CFGNormalizer.cpp:297</a></div></div>
541
+ <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#l00215">CFLGrammar.h:215</a></div></div>
542
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_a51b55df841ae449ecf0888325c6e8c6a"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a51b55df841ae449ecf0888325c6e8c6a">SVF::GrammarBase::getEBNFSigns</a></div><div class="ttdeci">Map&lt; std::string, Kind &gt; &amp; getEBNFSigns()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
543
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_a76e0969670709e24532756e56aafab19"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a76e0969670709e24532756e56aafab19">SVF::GrammarBase::getTotalKind</a></div><div class="ttdeci">Kind getTotalKind()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00200">CFLGrammar.h:200</a></div></div>
544
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_a2620ded7573ebdb8b4595e199105ef0e"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a2620ded7573ebdb8b4595e199105ef0e">SVF::GrammarBase::getAttrSyms</a></div><div class="ttdeci">const Set&lt; Kind &gt; &amp; getAttrSyms() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00243">CFLGrammar.h:243</a></div></div>
543
545
  <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&lt; std::string, Kind &gt; &amp;nonterminals)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00165">CFLGrammar.h:165</a></div></div>
544
- <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a37f4a6a11af608439596752d20667648"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a37f4a6a11af608439596752d20667648">SVF::CFGNormalizer::ebnfSignReplace</a></div><div class="ttdeci">void ebnfSignReplace(char sign, CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00326">CFGNormalizer.cpp:326</a></div></div>
546
+ <div class="ttc" id="classSVF_1_1CFGNormalizer_html_a37f4a6a11af608439596752d20667648"><div class="ttname"><a href="classSVF_1_1CFGNormalizer.html#a37f4a6a11af608439596752d20667648">SVF::CFGNormalizer::ebnfSignReplace</a></div><div class="ttdeci">void ebnfSignReplace(char sign, CFLGrammar *grammar)</div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8cpp_source.html#l00327">CFGNormalizer.cpp:327</a></div></div>
545
547
  </div><!-- fragment -->
546
548
  </div>
547
549
  </div>
@@ -569,8 +571,8 @@ Private Member Functions</h2></td></tr>
569
571
  </table>
570
572
  </div><div class="memdoc">
571
573
 
572
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00497">497</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
573
- <div class="fragment"><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;{</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// Remove First Terminal</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> head : grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> rule: head.second)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> long_run = rule;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; long_run.erase(long_run.begin());</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keyword">auto</span> it = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(head.first).find(rule);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(head.first).erase(it);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].insert(long_run);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div><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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00180">CFLGrammar.h:180</a></div></div>
574
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00498">498</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
575
+ <div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">// Remove First Terminal</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> head : grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>())</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> rule: head.second)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1GrammarBase.html#af384c960a5edc576cbfb60a869e346ec">GrammarBase::Production</a> long_run = rule;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; long_run.erase(long_run.begin());</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">auto</span> it = grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(head.first).find(rule);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>().at(head.first).erase(it);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a4561438149716c91178ea013686f66ae">getRawProductions</a>()[head.first].insert(long_run);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div><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&lt; Symbol, Productions &gt; &amp; getRawProductions()</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00190">CFLGrammar.h:190</a></div></div>
574
576
  <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&lt; Symbol &gt; Production</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00156">CFLGrammar.h:156</a></div></div>
575
577
  </div><!-- fragment -->
576
578
  </div>
@@ -615,9 +617,9 @@ Private Member Functions</h2></td></tr>
615
617
  </table>
616
618
  </div><div class="memdoc">
617
619
 
618
- <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00438">438</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
619
- <div class="fragment"><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; std::smatch matches;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; std::regex LHSReg(<span class="stringliteral">&quot;\\s*(.*)&quot;</span>);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; std::regex_search(LHS, matches, LHSReg);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; LHS = matches.str(1);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; delimiter = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">while</span> ((pos = LHS.find(delimiter)) != std::string::npos)</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; word = LHS.substr(0, pos);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; LHS.erase(0, pos + delimiter.length());</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; normalProd.push_back(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(word));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; normalProd.push_back(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(LHS));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</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>
620
- <div class="ttc" id="classSVF_1_1GrammarBase_html_a5c081c6ff0501fc91b71352995d6d9dc"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">SVF::GrammarBase::str2Symbol</a></div><div class="ttdeci">Symbol str2Symbol(const std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00070">CFLGrammar.cpp:70</a></div></div>
620
+ <p class="definition">Definition at line <a class="el" href="CFGNormalizer_8cpp_source.html#l00439">439</a> of file <a class="el" href="CFGNormalizer_8cpp_source.html">CFGNormalizer.cpp</a>.</p>
621
+ <div class="fragment"><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; std::smatch matches;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; std::regex LHSReg(<span class="stringliteral">&quot;\\s*(.*)&quot;</span>);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> delimiter;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordtype">size_t</span> pos;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> word;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; std::regex_search(LHS, matches, LHSReg);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; LHS = matches.str(1);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; delimiter = <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">while</span> ((pos = LHS.find(delimiter)) != std::string::npos)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; word = LHS.substr(0, pos);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; LHS.erase(0, pos + delimiter.length());</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; normalProd.push_back(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(word));</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; normalProd.push_back(grammar-&gt;<a class="code" href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">str2Symbol</a>(LHS));</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</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>
622
+ <div class="ttc" id="classSVF_1_1GrammarBase_html_a5c081c6ff0501fc91b71352995d6d9dc"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a5c081c6ff0501fc91b71352995d6d9dc">SVF::GrammarBase::str2Symbol</a></div><div class="ttdeci">Symbol str2Symbol(const std::string str) const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8cpp_source.html#l00074">CFLGrammar.cpp:74</a></div></div>
621
623
  </div><!-- fragment -->
622
624
  </div>
623
625
  </div>