yosys-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
libparse.h
Go to the documentation of this file.
1 /*
2  * yosys -- Yosys Open SYnthesis Suite
3  *
4  * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
5  *
6  * Permission to use, copy, modify, and/or distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  *
18  */
19 
20 #ifndef LIBPARSE_H
21 #define LIBPARSE_H
22 
23 #include <stdio.h>
24 #include <string>
25 #include <vector>
26 #include <set>
27 
28 namespace Yosys
29 {
30  struct LibertyAst
31  {
32  std::string id, value;
33  std::vector<std::string> args;
34  std::vector<LibertyAst*> children;
35  ~LibertyAst();
36  LibertyAst *find(std::string name);
37  void dump(FILE *f, std::string indent = "", std::string path = "", bool path_ok = false);
38  static std::set<std::string> blacklist;
39  static std::set<std::string> whitelist;
40  };
41 
43  {
44  std::istream &f;
45  int line;
47  LibertyParser(std::istream &f) : f(f), line(1), ast(parse()) {}
48  ~LibertyParser() { if (ast) delete ast; }
49  int lexer(std::string &str);
50  LibertyAst *parse();
51  void error();
52  };
53 }
54 
55 #endif
56 
std::string id
Definition: libparse.h:32
LibertyParser(std::istream &f)
Definition: libparse.h:47
std::vector< std::string > args
Definition: libparse.h:33
LibertyAst * parse()
Definition: libparse.cc:167
void dump(FILE *f, std::string indent="", std::string path="", bool path_ok=false)
Definition: libparse.cc:54
std::istream & f
Definition: libparse.h:44
std::string value
Definition: libparse.h:32
LibertyAst * ast
Definition: libparse.h:46
int lexer(std::string &str)
Definition: libparse.cc:87
static std::set< std::string > whitelist
Definition: libparse.h:39
std::vector< LibertyAst * > children
Definition: libparse.h:34
LibertyAst * find(std::string name)
Definition: libparse.cc:44
static std::set< std::string > blacklist
Definition: libparse.h:38