Some minor refactoring and added a (currently trivial) normalization step
[fur] / normalization.py
1 import collections
2
3 NormalProgram = collections.namedtuple(
4     'NormalProgram',
5     [
6         'statement_list',
7     ],
8 )
9
10 def flatten(iterable):
11     return tuple(item for internal in iterable for item in internal)
12
13 def normalize_statement(statement):
14     return (statement,)
15
16 def normalize(program):
17     return NormalProgram(
18         statement_list=flatten(normalize_statement(s) for s in program.statement_list),
19     )