Skip to content
Snippets Groups Projects
Commit 3fa80f1e authored by Anders Blomdell's avatar Anders Blomdell
Browse files

Add AUTO generation for local variables

parent cff55a54
No related branches found
No related tags found
No related merge requests found
...@@ -16,8 +16,8 @@ class PlutoVariables: ...@@ -16,8 +16,8 @@ class PlutoVariables:
self.by_name[name] = (int(pluto), int(index)) self.by_name[name] = (int(pluto), int(index))
pass pass
def codegen(self, expr): def codegen(self, auto, current):
m = re.match('([^=]+)=(AND|OR)\{(.*),(.*)\}', expr) m = re.match('([^=]+)=(AND|OR)\{(.*),(.*)\}', auto)
if m: if m:
lh = m.group(1) lh = m.group(1)
op = m.group(2) op = m.group(2)
...@@ -37,7 +37,17 @@ class PlutoVariables: ...@@ -37,7 +37,17 @@ class PlutoVariables:
return("%s=%s" % (lh, '*'.join(rh))) return("%s=%s" % (lh, '*'.join(rh)))
elif op == 'OR': elif op == 'OR':
return("%s=%s" % (lh, '+'.join(rh))) return("%s=%s" % (lh, '+'.join(rh)))
raise Exception('Invalid expression', expr) pass
m = re.match('([^=]+)=(.*)', auto)
if m:
regexp = '^(' + m.group(1).replace('*', '.*') + ')='
expr = '{0}=' + m.group(2)
lh_m = re.match(regexp, current)
if lh_m:
matches = lh_m.groups()
return expr.format(*matches)
pass
raise Exception('Invalid expression', auto)
class SPS: class SPS:
...@@ -62,7 +72,7 @@ class SPS: ...@@ -62,7 +72,7 @@ class SPS:
result.append(l) result.append(l)
m = re.match(';\s*AUTO:\s*(.*)', l) m = re.match(';\s*AUTO:\s*(.*)', l)
if m: if m:
code = self.gm.codegen(m.group(1)) code = self.gm.codegen(m.group(1), current=result[-2])
if code != result[-2]: if code != result[-2]:
result[-2] = code result[-2] = code
pass pass
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment