From ad5d1a45c502a0f68d30c52de86b32e065d99c86 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Wed, 2 Jul 2014 19:46:41 +0200 Subject: [PATCH] Frameword for fsm almost complete, graphviz output too --- program/regexex/.gitignore | 1 + program/regexex/fsm.py | 194 +++++++++++++++++++++++++++++++++++++ thesis/methods.tex | 4 + thesis/thesis.pdf | Bin 25140 -> 26817 bytes thesis/thesis.tex | 15 ++- 5 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 program/regexex/.gitignore create mode 100644 program/regexex/fsm.py create mode 100644 thesis/methods.tex diff --git a/program/regexex/.gitignore b/program/regexex/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/program/regexex/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/program/regexex/fsm.py b/program/regexex/fsm.py new file mode 100644 index 0000000..2f14fcc --- /dev/null +++ b/program/regexex/fsm.py @@ -0,0 +1,194 @@ +#!/bin/env python +# -*- coding: utf-8 -*- + +import sys +import re + + +class fsm(): + split = re.compile(r""" +( + (?: + \[.*?\]| # character group + \(.*\)| # group + \\?. # single character + ) + (?: + \{[0-9,]+\}| # strict quantifier + [?+*] # loose quantifier + )? +)""") + + def __init__(self): + # List of nodes number as key, info as value + self.nodes = {-1: '#start', -2: '#end'} + # List of connection tuples + self.connections = {} + # Dictionary of string that are added and have to be integrated + self.strings = {} + # Dictionary of marking locations in the graph + self.markings = {} + + def add_node(self, string, key=-1): + """Add a node to the finite state machine + + Required arguments: + string -- the string to which the node will match + + Keyword arguments: + key -- key to which the node is assigned in the internal structure, + when not provided the key is generated (default 1) + """ + key = key if key != -1 else\ + 0 if not self.nodes else max(self.nodes) + 1 + self.nodes[key] = string + return key + + def add_connection(self, node_from, node_to, check=True): + """Add a connection to the finite state machine, will throw an + exception if the check flag is set to True and some nodes aren't + present + + Required arguments: + node_from -- key of the starting point of the connection + node_to -- key of the ending point of the connection + + Keyword arguments: + check -- flag to check if the end and start point even exists + before creating the connection (default False) + """ + keys = self.nodes.keys() + if check or (node_from in keys and node_to in keys): + if node_from not in self.connections: + self.connections[node_from] = set() + self.connections[node_from].add(node_to) + else: + raise Exception('One or more nodes not found') + + def add_string(self, string, markings): + """Add a string to the finite state machine + + Required arguments: + string -- raw string to integrate in the finite state machine + markings -- dictionary of markings of the following form: + {'mark0': (start, end), 'mark1': (start, end) ... } + """ + string = string.replace(' ', '_') + self.strings[string] = markings + self.integrate(string) + + def integrate(self, string): + """Integrate the given string in the finite state machine, will throw + an exception if the string doesn't exist in the nodes list + + Required arguments: + string -- the raw string to integrate + """ + if string not in self.strings: + raise Exception('Given string not present in the nodes') + # Add all the markings that were not added + markings = self.strings[string] + for k in markings.iterkeys(): + if k not in self.markings: + self.markings[k] = (self.add_node('#{}_start'.format(k)), + self.add_node('#{}_end'.format(k))) + # Loop over all tokens to add them as a node + beforelast = -1 + for enum, token in enumerate(string): + last = self.add_node(token) + for k, v in markings.iteritems(): + # When the index matches the starting point of a category + if v[0] == enum: + self.add_connection(beforelast, self.markings[k][0]) + self.add_connection(self.markings[k][0], last) + break + # When the index matches the ending point of a category + elif v[1] == enum: + self.add_connection(beforelast, last) + self.add_connection(last, self.markings[k][1]) + last = self.markings[k][1] + break + # No category match + else: + self.add_connection(beforelast, last) + # Remember the last node so the new node can connect to it + beforelast = last + # Connect to the end point + self.add_connection(last, -2) + + def optimize(self): + """Optimize the finite state machine""" + pass + + def graphviz(self, fp='-'): + """Print the finite state machine in graphviz format + + Keyword arguments: + fp -- filepath, '-' for stdout (default '-') + """ + # Open file and write header + fp = sys.stdout if fp == '-' else open(fp, 'w') + fp.write('digraph fsm{\n') + + # Find subgraphs travers the graph + subgraphs = {a: ([], []) for a in self.markings.keys() + ['none']} + self.travers(-1, subgraphs) + + # Print the nodes that are not in a subgraph + for nodes in subgraphs['none'][0] + subgraphs['none'][1]: + fp.write('{:<2}{}\n'.format(' ', nodes)) + del(subgraphs['none']) + + #Print the nodes that are in a subgraph + for key, sg in subgraphs.iteritems(): + fp.write('{0:<2}subgraph cluster_{1} {{\n'.format(' ', key)) + for nodes in sg[0] + sg[1]: + fp.write('{:<4}{}\n'.format(' ', nodes)) + fp.write('{:<2}}}\n'.format(' ')) + + # write footer and close file + fp.write('}') + if fp != sys.stdout: + fp.close() + + def travers(self, current, subgraphs, state='none', visited=set()): + """Traverse the graph and fill the dictionary for graphviz output + + Required arguments: + current -- current node key + subgraphs -- dictionary of subgraphs of the form: + {'subgraph1': ([], []), 'subgraph2': ([], []) ... } + + Keyword arguments: + state -- current state the traverser is in + visited -- set of visited nodes + """ + if current != -2 and current not in visited: + visited.add(current) + subgraphs[state][0].append('{} [label="{}"]'.format( + current, self.nodes[current])) + for c in self.connections[current]: + subgraphs[state][1].append('{} -> {}'.format(current, c)) + for name, markings in self.markings.iteritems(): + if markings[0] == c: + state = name + break + elif markings[1] == c: + state = 'none' + break + self.travers(c, subgraphs, state) + + +if __name__ == '__main__': + f = fsm() + f.add_string('maandag 11 augustus 2014 19:30 - Neutral Milk Hotel', + {'wanneer': (0, 29), 'wat': (33, 50)}) + f.add_string('dinsdag 19 augustus 2014 22:00 - Arkells', + {'wanneer': (0, 29), 'wat': (33, 39)}) + f.add_string('maandag 24 november 2014 20:30 - Fink', + {'wanneer': (0, 29), 'wat': (33, 36)}) + f.add_string( + 'maandag 29 december 2014 20:30 - Alain Clark - Locatie: De Duif', + {'wanneer': (0, 29), 'wat': (33, 43), 'waar': (47, 62)}) + f.optimize() + f.graphviz() diff --git a/thesis/methods.tex b/thesis/methods.tex new file mode 100644 index 0000000..20b7ae8 --- /dev/null +++ b/thesis/methods.tex @@ -0,0 +1,4 @@ +\section{Regular expressions, finite state machines and automata} + +\section{Algorithm} + diff --git a/thesis/thesis.pdf b/thesis/thesis.pdf index 186b6543e235eb517b6ab8795cfd2f83316c1538..abacf2ef492f7f264d0970a0784c2e7888a9f166 100644 GIT binary patch literal 26817 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 UW{$+h#m>WvL`5Z`D2eoc0EFhZGynhq literal 25140 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%0D^!8qrvAHe4g$|l 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 HECu{O7KFHh diff --git a/thesis/thesis.tex b/thesis/thesis.tex index 793d707..2d1d9c5 100644 --- a/thesis/thesis.tex +++ b/thesis/thesis.tex @@ -21,14 +21,23 @@ \tableofcontents \newpage -%\begin{abstract} -% \input{abstract.tex} -%\end{abstract} +\chapter*{ + \centering + \begin{normalsize} + Abstract + \end{normalsize} +} +\begin{quotation} + \noindent + \input{abstract.tex} +\end{quotation} +\clearpage \chapter{Introduction} \input{introduction.tex} \chapter{Methods} +\input{methods.tex} \chapter{Results} -- 2.20.1