diff options
author | Hart Chu <cthesky@yeah.net> | 2017-02-21 22:10:36 -0600 |
---|---|---|
committer | Eli Bendersky <eliben@users.noreply.github.com> | 2017-02-21 20:10:36 -0800 |
commit | 4771ceba9a72bfe732d06115b7b48937e4de39c0 (patch) | |
tree | 9e89b6adafacd55ee101fa7374d859168197c22c /examples | |
parent | a611da91a367e22aa86d07ae08b95865192327b0 (diff) | |
download | pycparser-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.py | 38 |
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() |