#include <CFGrammar.h>
|
| CFGrammar () |
|
Productions & | getEpsilonProds () |
|
SymbolMap< Symbol, Productions > & | getSingleRHSToProds () |
|
SymbolMap< Symbol, Productions > & | getFirstRHSToProds () |
|
SymbolMap< Symbol, Productions > & | getSecondRHSToProds () |
|
const bool | hasProdsFromFirstRHS (const Symbol sym) const |
|
const bool | hasProdsFromSingleRHS (const Symbol sym) const |
|
const bool | hasProdsFromSecondRHS (const Symbol sym) const |
|
const Productions & | getProdsFromSingleRHS (const Symbol sym) const |
|
const Productions & | getProdsFromFirstRHS (const Symbol sym) const |
|
const Productions & | getProdsFromSecondRHS (const Symbol sym) const |
|
const Symbol & | getLHSSymbol (const Production &prod) const |
|
const Symbol & | getFirstRHSSymbol (const Production &prod) const |
|
const Symbol & | getSecondRHSSymbol (const Production &prod) const |
|
void | dump () const |
|
void | dump (std::string fileName) const |
|
const u32_t | num_generator () |
|
Map< std::string, Kind > & | getNonterminals () |
|
void | setNonterminals (Map< std::string, Kind > &nonterminals) |
|
Map< std::string, Kind > & | getTerminals () |
|
void | setTerminals (Map< std::string, Kind > &terminals) |
|
Map< std::string, Kind > & | getEBNFSigns () |
|
void | setEBNFSigns (Map< std::string, Kind > &EBNFSigns) |
|
SymbolMap< Symbol, Productions > & | getRawProductions () |
|
const Map< Kind, Set< Attribute > > & | getKindToAttrsMap () const |
|
Kind | getTotalKind () |
|
Kind | getStartKind () |
|
void | setStartKind (Kind startKind) |
|
void | setTotalKind (Kind totalKind) |
|
std::string | extractKindStrFromSymbolStr (const std::string &symbolStr) const |
|
std::string | extractAttributeStrFromSymbolStr (const std::string &symbolStr) const |
|
void | setRawProductions (SymbolMap< Symbol, Productions > &rawProductions) |
|
void | setKindToAttrsMap (const Map< Kind, Set< Attribute >> &kindToAttrsMap) |
|
void | setAttributeKinds (const Set< Kind > &attributeKind) |
|
Kind | strToKind (std::string str) const |
|
Symbol | strToSymbol (const std::string str) const |
|
std::string | kindToStr (Kind kind) const |
|
std::string | symToStrDump (Symbol sym) const |
|
Symbol | getSymbol (const Production &prod, u32_t pos) |
|
const Set< Kind > & | getAttrSyms () const |
|
Kind | insertNonterminalKind (std::string const kindStr) |
| Insert kind to nonterminal and return kind. More...
|
|
Kind | insertTerminalKind (std::string strLit) |
|
Symbol | insertSymbol (std::string strLit) |
|
Symbol | insertNonTerminalSymbol (std::string strLit) |
|
Symbol | insertTerminalSymbol (std::string strLit) |
|
Symbol | insertEBNFSigns (std::string strLit) |
|
void | insertAttribute (Kind kind, Attribute a) |
|
|
typedef u32_t | Kind |
|
typedef u32_t | Attribute |
|
typedef u32_t | VariableAttribute |
|
typedef struct SVF::GrammarBase::Symbol | Symbol |
|
template<typename Key , typename Value , typename Hash = SymbolHash, typename KeyEqual = std::equal_to<Key>, typename Allocator = std::allocator<std::pair<const Key, Value>>> |
using | SymbolMap = std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > |
|
template<typename Key , typename Hash = SymbolVectorHash, typename KeyEqual = std::equal_to<Key>, typename Allocator = std::allocator<Key>> |
using | SymbolSet = std::unordered_set< Key, Hash, KeyEqual, Allocator > |
|
typedef std::vector< Symbol > | Production |
|
typedef SymbolSet< Production > | Productions |
|
Kind | startKind |
|
static constexpr unsigned char | EdgeKindMaskBits = 8 |
| We use the lower 8 bits to denote edge kind. More...
|
|
static constexpr unsigned char | AttributedKindMaskBits = 24 |
| We use the lower 24 bits to denote attributed kind. More...
|
|
static constexpr u64_t | EdgeKindMask = (~0ULL) >> (64 - EdgeKindMaskBits) |
|
Definition at line 290 of file CFGrammar.h.
◆ CFGrammar()
◆ classof() [1/2]
static bool SVF::CFGrammar::classof |
( |
const CFGrammar * |
| ) |
|
|
inlinestatic |
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 298 of file CFGrammar.h.
◆ classof() [2/2]
static bool SVF::CFGrammar::classof |
( |
const GrammarBase * |
node | ) |
|
|
inlinestatic |
◆ dump() [1/2]
void CFGrammar::dump |
( |
| ) |
const |
◆ dump() [2/2]
Definition at line 351 of file CFGrammar.cpp.
353 std::ofstream gramFile(fileName);
354 gramFile <<
"Start Kind:\n";
357 gramFile <<
"Epsilon Production:\n";
358 std::vector<std::string> strV;
361 std::stringstream ss;
368 ss <<
symToStrDump(sym) <<
'(' << sym.kind <<
')' <<
' ';
370 strV.insert(strV.begin(), ss.str());
372 std::sort(strV.begin(), strV.end());
381 gramFile <<
"Single Production:\n";
385 for (
auto pro: symProPair.second)
387 std::stringstream ss;
396 ss <<
symToStrDump(sym) <<
'(' << sym.kind <<
')' <<
' ';
398 strV.insert(strV.begin(), ss.str());
401 std::sort(strV.begin(), strV.end());
410 gramFile <<
"Binary Production:\n";
414 for (
auto pro: symProPair.second)
416 std::stringstream ss;
426 ss <<
symToStrDump(sym) <<
'(' << sym.kind <<
')' <<
' ';
428 strV.insert(strV.begin(), ss.str());
431 std::sort(strV.begin(), strV.end());
SymbolMap< Symbol, Productions > firstRHSToProds
SymbolSet< Production > epsilonProds
SymbolMap< Symbol, Productions > singleRHSToProds
std::string symToStrDump(Symbol sym) const
std::string kindToStr(Kind kind) const
◆ getEpsilonProds()
◆ getFirstRHSSymbol()
const Symbol& SVF::CFGrammar::getFirstRHSSymbol |
( |
const Production & |
prod | ) |
const |
|
inline |
◆ getFirstRHSToProds()
◆ getLHSSymbol()
◆ getProdsFromFirstRHS()
◆ getProdsFromSecondRHS()
Definition at line 360 of file CFGrammar.h.
363 assert(it!=
secondRHSToProds.end() &&
"production (X -> Y sym) not found for sym!!");
SymbolMap< Symbol, Productions > secondRHSToProds
◆ getProdsFromSingleRHS()
◆ getSecondRHSSymbol()
const Symbol& SVF::CFGrammar::getSecondRHSSymbol |
( |
const Production & |
prod | ) |
const |
|
inline |
◆ getSecondRHSToProds()
◆ getSingleRHSToProds()
◆ hasProdsFromFirstRHS()
const bool SVF::CFGrammar::hasProdsFromFirstRHS |
( |
const Symbol |
sym | ) |
const |
|
inline |
◆ hasProdsFromSecondRHS()
const bool SVF::CFGrammar::hasProdsFromSecondRHS |
( |
const Symbol |
sym | ) |
const |
|
inline |
◆ hasProdsFromSingleRHS()
const bool SVF::CFGrammar::hasProdsFromSingleRHS |
( |
const Symbol |
sym | ) |
const |
|
inline |
◆ num_generator()
const u32_t SVF::CFGrammar::num_generator |
( |
| ) |
|
|
inline |
◆ epsilonProds
◆ firstRHSToProds
◆ newTerminalSubscript
u32_t SVF::CFGrammar::newTerminalSubscript |
|
private |
◆ secondRHSToProds
◆ singleRHSToProds
The documentation for this class was generated from the following files: