summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authoreli.bendersky <devnull@localhost>2011-03-05 10:58:46 +0200
committereli.bendersky <devnull@localhost>2011-03-05 10:58:46 +0200
commite6ecb1acb66637bca7c8f0b47177c5263f179aa5 (patch)
tree5c086dac91437de8a1b209bc7b8c4b55a1d57580 /examples
parent724b1ccfe65d44a79d8c66764baddec57c26751e (diff)
downloadpycparser-e6ecb1acb66637bca7c8f0b47177c5263f179aa5.tar.gz
added if & dowhile
Diffstat (limited to 'examples')
-rw-r--r--examples/c-to-c.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/examples/c-to-c.py b/examples/c-to-c.py
index 4ecdbca..a3fe148 100644
--- a/examples/c-to-c.py
+++ b/examples/c-to-c.py
@@ -174,6 +174,16 @@ class CGenerator(object):
s += self.visit(n.iffalse)
return s
+ def visit_If(self, n):
+ s = 'if ('
+ if n.cond: s += self.visit(n.cond)
+ s += ')\n'
+ s += self._generate_stmt(n.iftrue, add_indent=True)
+ if n.iffalse:
+ s += self._make_indent() + 'else\n'
+ s += self._generate_stmt(n.iffalse, add_indent=True)
+ return s
+
def visit_For(self, n):
s = 'for ('
if n.init: s += self.visit(n.init)
@@ -192,6 +202,17 @@ class CGenerator(object):
s += self._generate_stmt(n.stmt, add_indent=True)
return s
+ def visit_DoWhile(self, n):
+ s = 'do\n'
+ s += self._generate_stmt(n.stmt, add_indent=True)
+ s += self._make_indent() + 'while ('
+ if n.cond: s += self.visit(n.cond)
+ s += ');'
+ return s
+
+ def visit_EllipsisParam(self, n):
+ return '...'
+
def _generate_stmt(self, n, add_indent=False):
""" Generation from a statement node. This method exists as a wrapper
for individual visit_* methods to handle different treatment of
@@ -288,14 +309,21 @@ if __name__ == "__main__":
translate_to_c(sys.argv[1])
else:
src = r'''
+
+int mydecl(float joe, ...);
+
typedef int koe;
static unsigned int hash_func(const char* str, unsigned int table_size)
{
+ foo(bar, bas, moe, callme(func));
print(joe ? moe : baba[4]);
a++;
++a;
- a = b->kwa = c.c + 2;
+ if (k > 2) {
+ print(5);
+ } else
+ print(888888);
return hash_value;
}