--- /dev/null
+class Statement:
+ def __init__(self, keyword, *args):
+ self.keyword = keyword
+ self.args = list(args)
+ self.sub = []
+
+ def append(self, v):
+ self.args.append(v)
+
+ def write_to_file(self, f, indent=0):
+ s = self.keyword
+ for a in self.args:
+ if type(a)==float:
+ s += " {:#.6g}".format(a)
+ elif type(a)==str:
+ s += ' "{}"'.format(a)
+ else:
+ s += " {}".format(a)
+
+ tabs = '\t'*indent
+ f.write("{}{}".format(tabs, s))
+ if self.sub:
+ f.write("\n{}{{\n".format(tabs))
+ for s in self.sub:
+ s.write_to_file(f, indent+1)
+ f.write("{}}};\n".format(tabs))
+ else:
+ f.write(";\n")
+
+class Token:
+ def __init__(self, text):
+ self.text = text
+
+ def __str__(self):
+ return self.text