From 2e95e3a33bcb34aeec66551503c692c1cb80ab61 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 9 Feb 2009 20:05:30 +0100 Subject: * all python: - changed tabs to spaces. --- tools/dfagen/dfagen/automaton.py | 142 +++++++++--------- tools/dfagen/dfagen/command.py | 8 +- tools/dfagen/dfagen/output/__init__.py | 30 ++-- tools/dfagen/dfagen/output/c.py | 260 ++++++++++++++++----------------- tools/dfagen/dfagen/output/dot.py | 22 +-- 5 files changed, 231 insertions(+), 231 deletions(-) (limited to 'tools/dfagen/dfagen') diff --git a/tools/dfagen/dfagen/automaton.py b/tools/dfagen/dfagen/automaton.py index 367da582..05dda350 100644 --- a/tools/dfagen/dfagen/automaton.py +++ b/tools/dfagen/dfagen/automaton.py @@ -2,110 +2,110 @@ class Event: """Event definition.""" def __init__ (self, name, comments = ''): - self.name = name - self.comments = comments - pass + self.name = name + self.comments = comments + pass def __str__ (self): - s = ' ' + self.name + '\n' - if self.comments: - s += ' ' + self.comments.replace ('\n', '\n ') + '\n' - return s + s = ' ' + self.name + '\n' + if self.comments: + s += ' ' + self.comments.replace ('\n', '\n ') + '\n' + return s class State: """State definition.""" def __init__ (self, name, comments = ''): - self.name = name - self.comments = comments - self.transitions = { } + self.name = name + self.comments = comments + self.transitions = { } def __str__ (self): - s = ' ' + self.name + '\n' - if self.comments: - s += ' ' + self.comments.replace ('\n', '\n ') + '\n' - return s + s = ' ' + self.name + '\n' + if self.comments: + s += ' ' + self.comments.replace ('\n', '\n ') + '\n' + return s def add_branch (self, branch): - if branch.event not in self.transitions: - self.transitions[branch.event] = Transition (branch.event) - self.transitions[branch.event].add_branch (branch) + if branch.event not in self.transitions: + self.transitions[branch.event] = Transition (branch.event) + self.transitions[branch.event].add_branch (branch) class Transition: """Transition definition.""" def __init__ (self, event): - self.event = event - self.branches = { } + self.event = event + self.branches = { } def add_branch (self, branch): - assert self.event is branch.event - if branch.name == None and self.branches: - raise KeyError (branch.name) - if branch.name != None and None in self.branches: - raise KeyError (branch.name) - if branch.name in self.branches: - raise KeyError (branch.name) - self.branches[branch.name] = branch + assert self.event is branch.event + if branch.name == None and self.branches: + raise KeyError (branch.name) + if branch.name != None and None in self.branches: + raise KeyError (branch.name) + if branch.name in self.branches: + raise KeyError (branch.name) + self.branches[branch.name] = branch def __str__ (self): - s = '' - for br in self.branches.values (): - s += str (br); - return s + s = '' + for br in self.branches.values (): + s += str (br); + return s class TransitionBranch: def __init__ (self, event, name = None, to = None, comments = ''): - self.event = event - self.name = name - self.to = to - self.comments = comments + self.event = event + self.name = name + self.to = to + self.comments = comments def __str__ (self): - s = ' ' + self.event.name - if self.name: - s += ': ' + self.name - s += ' -> ' + (self.to and self.to.name or '.') + '\n' - if self.comments: - s += ' ' + self.comments.replace ('\n', '\n ') + '\n' - return s + s = ' ' + self.event.name + if self.name: + s += ': ' + self.name + s += ' -> ' + (self.to and self.to.name or '.') + '\n' + if self.comments: + s += ' ' + self.comments.replace ('\n', '\n ') + '\n' + return s class Automaton: def __init__ (self, name): - self.name = name - self.comments = '' - self.initial = None - self.states = { } - self.events = { } + self.name = name + self.comments = '' + self.initial = None + self.states = { } + self.events = { } def add_state (self, state): - if state.name in self.states: - raise KeyError (state.name) - if not self.states: - self.initial = state - self.states[state.name] = state + if state.name in self.states: + raise KeyError (state.name) + if not self.states: + self.initial = state + self.states[state.name] = state def add_event (self, event): - if event.name in self.events: - raise KeyError (event.name) - self.events[event.name] = event + if event.name in self.events: + raise KeyError (event.name) + self.events[event.name] = event def __str__ (self): - s = self.name - if self.comments: - s += ' ' + self.comments.replace ('\n', '\n ') + '\n' - s += '\nStates:\n' - for state in self.states.values (): - s += str (state) - s += '\nEvents:\n' - for event in self.events.values (): - s += str (event) - s += '\n' - for state in self.states.values (): - s += state.name + ':\n' - for tr in state.transitions.values (): - s += str (tr) - s += '\n' - return s + s = self.name + if self.comments: + s += ' ' + self.comments.replace ('\n', '\n ') + '\n' + s += '\nStates:\n' + for state in self.states.values (): + s += str (state) + s += '\nEvents:\n' + for event in self.events.values (): + s += str (event) + s += '\n' + for state in self.states.values (): + s += state.name + ':\n' + for tr in state.transitions.values (): + s += str (tr) + s += '\n' + return s diff --git a/tools/dfagen/dfagen/command.py b/tools/dfagen/dfagen/command.py index 36f4803d..8a976023 100644 --- a/tools/dfagen/dfagen/command.py +++ b/tools/dfagen/dfagen/command.py @@ -10,13 +10,13 @@ from optparse import OptionParser def run (): opt = OptionParser () opt.add_option ('-d', '--dfa', dest='dfa', - help='read DFA description from FILE', metavar='FILE') + help='read DFA description from FILE', metavar='FILE') opt.add_option ('-o', '--output', dest='output', - help='choose output format', metavar='OUTPUT') + help='choose output format', metavar='OUTPUT') opt.add_option ('-c', '--config', dest='config', - help='read output configuration from FILE', metavar='FILE') + help='read output configuration from FILE', metavar='FILE') opt.add_option ('-p', '--prefix', dest='prefix', - help='use PREFIX for generated output', metavar='PREFIX') + help='use PREFIX for generated output', metavar='PREFIX') # TODO add more error checking. (options, args) = opt.parse_args () # Read automaton. diff --git a/tools/dfagen/dfagen/output/__init__.py b/tools/dfagen/dfagen/output/__init__.py index bbb8365a..567ab745 100644 --- a/tools/dfagen/dfagen/output/__init__.py +++ b/tools/dfagen/dfagen/output/__init__.py @@ -2,30 +2,30 @@ from ConfigParser import ConfigParser class UserConfig: def __init__ (self, file): - if file: - f = open (file, 'r') - cp = ConfigParser () - cp.readfp (f) - f.close () - self.dict = dict (cp.items ('user')) - if cp.has_section ('templates'): - self.templates = dict (cp.items ('templates')) - else: - self.templates = dict () + if file: + f = open (file, 'r') + cp = ConfigParser () + cp.readfp (f) + f.close () + self.dict = dict (cp.items ('user')) + if cp.has_section ('templates'): + self.templates = dict (cp.items ('templates')) + else: + self.templates = dict () def __getitem__ (self, key): - return self.dict[key] + return self.dict[key] def __contains__ (self, key): - return key in self.dict + return key in self.dict import c import dot outputs = dict ( - c = c, - dot = dot, - ) + c = c, + dot = dot, + ) def get_output (name): return outputs[name]; diff --git a/tools/dfagen/dfagen/output/c.py b/tools/dfagen/dfagen/output/c.py index 40371563..099302f9 100644 --- a/tools/dfagen/dfagen/output/c.py +++ b/tools/dfagen/dfagen/output/c.py @@ -3,162 +3,162 @@ import os.path class WriterData: def __init__ (self, prefix, automaton, user): - self.prefix = prefix - self.automaton = automaton - self.user = user - self.states = self.automaton.states.values () - self.events = self.automaton.events.values () - self.dict = dict ( - prefix = prefix, - PREFIX = prefix.upper (), - name = automaton.name, - comments = automaton.comments, - initial = automaton.initial.name, - states = self.list_states, - events = self.list_events, - states_names = self.list_states_names, - events_names = self.list_events_names, - branches = self.list_branches, - transition_table = self.transition_table, - states_template = self.states_template, - ) + self.prefix = prefix + self.automaton = automaton + self.user = user + self.states = self.automaton.states.values () + self.events = self.automaton.events.values () + self.dict = dict ( + prefix = prefix, + PREFIX = prefix.upper (), + name = automaton.name, + comments = automaton.comments, + initial = automaton.initial.name, + states = self.list_states, + events = self.list_events, + states_names = self.list_states_names, + events_names = self.list_events_names, + branches = self.list_branches, + transition_table = self.transition_table, + states_template = self.states_template, + ) def list_states (self): - return ''.join ([' ' + self.prefix.upper () + '_STATE_' + s.name - + ',\n' for s in self.states]) + return ''.join ([' ' + self.prefix.upper () + '_STATE_' + s.name + + ',\n' for s in self.states]) def list_events (self): - return ''.join ([' ' + self.prefix.upper () + '_EVENT_' - + e.name.replace (' ', '_') + ',\n' for e in self.events]) + return ''.join ([' ' + self.prefix.upper () + '_EVENT_' + + e.name.replace (' ', '_') + ',\n' for e in self.events]) def list_states_names (self): - return ''.join ([' "' + s.name + '",\n' for s in self.states]) + return ''.join ([' "' + s.name + '",\n' for s in self.states]) def list_events_names (self): - return ''.join ([' "' + e.name.replace (' ', '_') + '",\n' - for e in self.events]) + return ''.join ([' "' + e.name.replace (' ', '_') + '",\n' + for e in self.events]) def list_branches (self): - l = '' - for s in self.states: - for tr in s.transitions.values (): - for br in tr.branches.values (): - n = dict ( - PREFIX = self.prefix.upper (), - state = s.name, - event = tr.event.name.replace (' ', '_'), - branch = (br.name and br.name.replace (' ', '_') - or ''), - to = (br.to and br.to.name or s.name), - ) - l += (' %(PREFIX)s_BRANCH__%(state)s__%(event)s__%(branch)s = ' - + '_BRANCH (%(state)s, %(event)s, %(to)s),\n') % n - return l + l = '' + for s in self.states: + for tr in s.transitions.values (): + for br in tr.branches.values (): + n = dict ( + PREFIX = self.prefix.upper (), + state = s.name, + event = tr.event.name.replace (' ', '_'), + branch = (br.name and br.name.replace (' ', '_') + or ''), + to = (br.to and br.to.name or s.name), + ) + l += (' %(PREFIX)s_BRANCH__%(state)s__%(event)s__%(branch)s = ' + + '_BRANCH (%(state)s, %(event)s, %(to)s),\n') % n + return l def transition_table (self): - r = '' - for s in self.states: - r += ' { ' - es = [ ] - for e in self.events: - if e in s.transitions: - es.append (self.prefix + '__' + s.name + '__' - + e.name.replace (' ', '_')) - else: - es.append ('NULL') - r += ',\n '.join (es) - r += ' },\n' - return r + r = '' + for s in self.states: + r += ' { ' + es = [ ] + for e in self.events: + if e in s.transitions: + es.append (self.prefix + '__' + s.name + '__' + + e.name.replace (' ', '_')) + else: + es.append ('NULL') + r += ',\n '.join (es) + r += ' },\n' + return r def states_template (self, template): - t = open (os.path.join (self.templatedir, template), 'r') - tt = t.read () - t.close () - exp = '' - for s in self.states: - for tr in s.transitions.values (): - d = WriterData (self.prefix, self.automaton, self.user) - branches_to = '\n'.join ( - [(br.name and br.name or '') - + ' => ' - + (br.to and br.to.name or s.name) - + (br.comments and ('\n ' - + br.comments.replace ('\n', '\n ')) or '') - for br in tr.branches.values ()]) - returns = '\n'.join ( - [' return ' + self.prefix + '_next' - + (br.name and '_branch' or '') - + ' (' + s.name + ', ' - + tr.event.name.replace (' ', '_') - + (br.name and ', ' + br.name.replace (' ', '_') - or '') - + ');' - for br in tr.branches.values ()]) - d.dict = dict ( - prefix = self.prefix, - user = self.user, - state = s.name, - event = tr.event.name.replace (' ', '_'), - branches_to = branches_to, - returns = returns, - ) - exp += tt % d - return exp + t = open (os.path.join (self.templatedir, template), 'r') + tt = t.read () + t.close () + exp = '' + for s in self.states: + for tr in s.transitions.values (): + d = WriterData (self.prefix, self.automaton, self.user) + branches_to = '\n'.join ( + [(br.name and br.name or '') + + ' => ' + + (br.to and br.to.name or s.name) + + (br.comments and ('\n ' + + br.comments.replace ('\n', '\n ')) or '') + for br in tr.branches.values ()]) + returns = '\n'.join ( + [' return ' + self.prefix + '_next' + + (br.name and '_branch' or '') + + ' (' + s.name + ', ' + + tr.event.name.replace (' ', '_') + + (br.name and ', ' + br.name.replace (' ', '_') + or '') + + ');' + for br in tr.branches.values ()]) + d.dict = dict ( + prefix = self.prefix, + user = self.user, + state = s.name, + event = tr.event.name.replace (' ', '_'), + branches_to = branches_to, + returns = returns, + ) + exp += tt % d + return exp def __getitem__ (self, key): - preproc = lambda v: v - args = [] - key = key.split (',') - key, args = key[0], key[1:] - if key.startswith ('*'): - key = key[1:] - preproc = lambda v: ' * ' + v.replace ('\n', '\n * ') + '\n' - if key.startswith ('_'): - key = key[1:] - preproc = lambda v: v and v + '\n' or '' - val = None - if key in self.dict: - try: - val = self.dict[key] (*args) - except TypeError: - val = self.dict[key] - elif key.startswith ('user.'): - val = self.user[key[5:]] - val = preproc (val) - if val is None: - raise KeyError, key - return val + preproc = lambda v: v + args = [] + key = key.split (',') + key, args = key[0], key[1:] + if key.startswith ('*'): + key = key[1:] + preproc = lambda v: ' * ' + v.replace ('\n', '\n * ') + '\n' + if key.startswith ('_'): + key = key[1:] + preproc = lambda v: v and v + '\n' or '' + val = None + if key in self.dict: + try: + val = self.dict[key] (*args) + except TypeError: + val = self.dict[key] + elif key.startswith ('user.'): + val = self.user[key[5:]] + val = preproc (val) + if val is None: + raise KeyError, key + return val class Writer: def __init__ (self, data, templatedir): - data.templatedir = templatedir - self.data = data - self.templatedir = templatedir + data.templatedir = templatedir + self.data = data + self.templatedir = templatedir def write_template (self, template, output): - t = open (os.path.join (self.templatedir, template), 'r') - tt = t.read () - t.close () - exp = tt % self.data - o = open (output, 'w') - o.write (exp) - o.close () + t = open (os.path.join (self.templatedir, template), 'r') + tt = t.read () + t.close () + exp = tt % self.data + o = open (output, 'w') + o.write (exp) + o.close () def write (self): - templates = self.data.user.templates - if not templates: - templates = { - 'template.h': '%.h', - 'template.c': '%.c', - 'template_cb.h': '%_cb.h', - 'template_cb_skel.c': '%_cb_skel.c', - } - for (t, f) in templates.iteritems (): - self.write_template (t, f.replace ('%', self.data.prefix)) + templates = self.data.user.templates + if not templates: + templates = { + 'template.h': '%.h', + 'template.c': '%.c', + 'template_cb.h': '%_cb.h', + 'template_cb_skel.c': '%_cb_skel.c', + } + for (t, f) in templates.iteritems (): + self.write_template (t, f.replace ('%', self.data.prefix)) def write (prefix, automaton, user): w = Writer (WriterData (prefix, automaton, user), 'template-dir' in user - and user['template-dir'] or os.path.splitext (__file__)[0]) + and user['template-dir'] or os.path.splitext (__file__)[0]) w.write () diff --git a/tools/dfagen/dfagen/output/dot.py b/tools/dfagen/dfagen/output/dot.py index be346b10..d6cc057c 100644 --- a/tools/dfagen/dfagen/output/dot.py +++ b/tools/dfagen/dfagen/output/dot.py @@ -4,16 +4,16 @@ def write (prefix, automaton, user): o = open (output, 'w') o.write ('digraph %s {' % prefix) for s in automaton.states.values (): - o.write (' %s\n' % s.name) - for tr in s.transitions.values (): - for br in tr.branches.values (): - o.write (' %(state)s -> %(to)s [ label = "%(event)s" ];\n' - % dict ( - state = s.name, - event = tr.event.name - + (br.name and ': ' + br.name or ''), - to = (br.to and br.to.name or s.name), - ) - ) + o.write (' %s\n' % s.name) + for tr in s.transitions.values (): + for br in tr.branches.values (): + o.write (' %(state)s -> %(to)s [ label = "%(event)s" ];\n' + % dict ( + state = s.name, + event = tr.event.name + + (br.name and ': ' + br.name or ''), + to = (br.to and br.to.name or s.name), + ) + ) o.write ('}\n') o.close () -- cgit v1.2.3