summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorHart Chu <cthesky@yeah.net>2017-02-21 22:10:36 -0600
committerEli Bendersky <eliben@users.noreply.github.com>2017-02-21 20:10:36 -0800
commit4771ceba9a72bfe732d06115b7b48937e4de39c0 (patch)
tree9e89b6adafacd55ee101fa7374d859168197c22c /examples
parenta611da91a367e22aa86d07ae08b95865192327b0 (diff)
downloadpycparser-4771ceba9a72bfe732d06115b7b48937e4de39c0.tar.gz
Add example of serializing AST for #82 (#172)
* Fix comment typo * Add example of serializing AST
Diffstat (limited to 'examples')
-rw-r--r--examples/serialize_ast.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/serialize_ast.py b/examples/serialize_ast.py
new file mode 100644
index 0000000..8add03b
--- /dev/null
+++ b/examples/serialize_ast.py
@@ -0,0 +1,38 @@
+#-----------------------------------------------------------------
+# pycparser: serialize_ast.py
+#
+# Simple example of serializing AST
+#
+# Hart Chu [https://github.com/CtheSky]
+# Eli Bendersky [http://eli.thegreenplace.net]
+# License: BSD
+#-----------------------------------------------------------------
+from __future__ import print_function
+import pickle
+
+from pycparser import c_parser
+
+text = r"""
+void func(void)
+{
+ x = 1;
+}
+"""
+
+parser = c_parser.CParser()
+ast = parser.parse(text)
+
+# Since AST nodes use __slots__ for faster attribute access and
+# space saving, it needs Pickle's protocol version >= 2.
+# The default version is 3 for python 3.x and 1 for python 2.7.
+# You can always select the highest available protocol with the -1 argument.
+#
+f = open('ast', 'wb')
+pickle.dump(ast, f, protocol=-1)
+f.close()
+
+f = open('ast', 'rb')
+ast = pickle.load(f)
+f.close()
+
+ast.show()