mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-22 20:32:07 +00:00
Improve libparse encapsulation
This commit is contained in:
parent
c35f5e379c
commit
3057c13a66
5 changed files with 73 additions and 71 deletions
|
@ -33,20 +33,18 @@ namespace Yosys
|
|||
std::vector<std::string> args;
|
||||
std::vector<LibertyAst*> children;
|
||||
~LibertyAst();
|
||||
LibertyAst *find(std::string name);
|
||||
void dump(FILE *f, std::string indent = "", std::string path = "", bool path_ok = false);
|
||||
static std::set<std::string> blacklist;
|
||||
static std::set<std::string> whitelist;
|
||||
const LibertyAst *find(std::string name) const;
|
||||
|
||||
typedef std::set<std::string> sieve;
|
||||
void dump(FILE *f, sieve &blacklist, sieve &whitelist, std::string indent = "", std::string path = "", bool path_ok = false) const;
|
||||
};
|
||||
|
||||
struct LibertyParser
|
||||
class LibertyParser
|
||||
{
|
||||
private:
|
||||
std::istream &f;
|
||||
int line;
|
||||
LibertyAst *ast;
|
||||
LibertyParser(std::istream &f) : f(f), line(1), ast(parse()) {}
|
||||
~LibertyParser() { if (ast) delete ast; }
|
||||
|
||||
|
||||
/* lexer return values:
|
||||
'v': identifier, string, array range [...] -> str holds the token string
|
||||
'n': newline
|
||||
|
@ -57,6 +55,12 @@ namespace Yosys
|
|||
LibertyAst *parse();
|
||||
void error();
|
||||
void error(const std::string &str);
|
||||
|
||||
public:
|
||||
const LibertyAst *ast;
|
||||
|
||||
LibertyParser(std::istream &f) : f(f), line(1), ast(parse()) {}
|
||||
~LibertyParser() { if (ast) delete ast; }
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue