summaryrefslogtreecommitdiff
path: root/passes/dfflibmap/libparse.h
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-01-05 11:13:26 +0100
committerClifford Wolf <clifford@clifford.at>2013-01-05 11:13:26 +0100
commit7764d0ba1dcf064ae487ee985c43083a0909e7f4 (patch)
tree18c05b8729df381af71b707748ce1d605e0df764 /passes/dfflibmap/libparse.h
initial import
Diffstat (limited to 'passes/dfflibmap/libparse.h')
-rw-r--r--passes/dfflibmap/libparse.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/passes/dfflibmap/libparse.h b/passes/dfflibmap/libparse.h
new file mode 100644
index 00000000..8c4a2f5c
--- /dev/null
+++ b/passes/dfflibmap/libparse.h
@@ -0,0 +1,56 @@
+/*
+ * yosys -- Yosys Open SYnthesis Suite
+ *
+ * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#ifndef LIBPARSE_H
+#define LIBPARSE_H
+
+#include <stdio.h>
+#include <string>
+#include <vector>
+#include <set>
+
+namespace PASS_DFFLIBMAP
+{
+ struct LibertyAst
+ {
+ std::string id, value;
+ 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;
+ };
+
+ struct LibertyParer
+ {
+ FILE *f;
+ int line;
+ LibertyAst *ast;
+ LibertyParer(FILE *f) : f(f), line(1), ast(parse()) {}
+ ~LibertyParer() { if (ast) delete ast; }
+ int lexer(std::string &str);
+ LibertyAst *parse();
+ void error();
+ };
+}
+
+#endif
+