git @ Cat's Eye Technologies ALPACA / 53cc6a0
Merge branch 'master' of https://github.com/catseye/ALPACA into develop-1.1 Chris Pressey 7 years ago
1 changed file(s) with 3 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
104104 self.file.write('}\n')
105105
106106 def compile_class_defn(self, defn):
107 self.file.write("function evalClass_%s(pf, x, y) {\nvar id;\n" % defn.id);
107 self.file.write("function evalClass_%s(pf, x, y, seen) {\nvar id;\nseen['%s'] = true;\n" % (defn.id, defn.id));
108108 for rule in defn.rules:
109109 dest = rule.state_ref
110110 expr = rule.expr
114114 self.compile_state_ref(dest)
115115 self.file.write(";\n}\n")
116116 for superclass in defn.classes:
117 self.file.write("id = evalClass_%s(pf, x, y);\n" % superclass.id)
117 self.file.write("id = seen['%s'] ? undefined : evalClass_%s(pf, x, y, seen);\n" % (superclass.id, superclass.id))
118118 self.file.write("if (id !== undefined) return id;\n")
119119 self.file.write("return undefined;\n}\n\n")
120120
130130 self.compile_state_ref(dest)
131131 self.file.write(";\n}\n")
132132 for superclass in defn.classes:
133 self.file.write("id = evalClass_%s(pf, x, y);\n" % superclass.id)
133 self.file.write("id = evalClass_%s(pf, x, y, {});\n" % superclass.id)
134134 self.file.write("if (id !== undefined) return id;\n")
135135 self.file.write("return '%s';\n}\n\n" % defn.id)
136136