summaryrefslogtreecommitdiffstats
path: root/verigraph/service/src/tests/j-verigraph-generator/code_generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'verigraph/service/src/tests/j-verigraph-generator/code_generator.py')
-rw-r--r--verigraph/service/src/tests/j-verigraph-generator/code_generator.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/verigraph/service/src/tests/j-verigraph-generator/code_generator.py b/verigraph/service/src/tests/j-verigraph-generator/code_generator.py
new file mode 100644
index 0000000..5b9834f
--- /dev/null
+++ b/verigraph/service/src/tests/j-verigraph-generator/code_generator.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+##############################################################################
+# Copyright (c) 2017 Politecnico di Torino and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import sys, string
+
+class CodeGeneratorBackend:
+
+ def begin(self, tab="\t"):
+ self.code = []
+ self.tab = tab
+ self.level = 0
+
+ def end(self):
+ return string.join(self.code, "")
+
+ def write(self, string):
+ self.code.append(self.tab * self.level + string)
+
+ def writeln(self, string):
+ self.code.append(self.tab * self.level + string + "\n")
+
+ def append(self, string):
+ self.code.append(string)
+
+ def indent(self):
+ self.level = self.level + 1
+
+ def dedent(self):
+ if self.level == 0:
+ raise SyntaxError, "internal error in code generator"
+ self.level = self.level - 1
+
+ def write_list(self, data, delimiter=True, wrapper="'"):
+ if delimiter == True:
+ self.code.append("{")
+ first = True
+ for element in data:
+ if (first == False):
+ self.code.append(", ")
+ else:
+ first = False
+ if wrapper == "'":
+ self.code.append("'" + str(element) + "'")
+ elif wrapper == "\"":
+ self.code.append("\"" + str(element) + "\"")
+ elif wrapper == "b":
+ self.code.append("(" + str(element) + ")")
+ else:
+ self.code.append(str(element))
+ if delimiter == True:
+ self.code.append("}")