From 3a843fb07f8c5ec1407266572493c6b9ec624542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sun, 2 Jun 2019 21:36:28 +0300 Subject: [PATCH] Add regex input to regex_to_nfa.py and regex_to_regex.py --- regex_to_nfa.py | 17 ++++++++++++----- regex_to_regex.py | 18 ++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/regex_to_nfa.py b/regex_to_nfa.py index e3e4cbc..0102a6b 100644 --- a/regex_to_nfa.py +++ b/regex_to_nfa.py @@ -1,5 +1,8 @@ -from regex import Literal, Concatenation, Alternation, Star, lit, concat, bar, star +import sys + +from regex import Literal, Concatenation, Alternation, Star, lit from nfa import NFA, prettyprint +from parse_regex import parse, ParseError def to_nfa(regex): def new_state(): @@ -94,12 +97,16 @@ def to_nfa(regex): return NFA(start_state, [end_state], transitions) def main(): - regex = concat(lit('x'), star(bar(lit('a'), lit('b'))), lit('y')) - print(regex) + try: + regex = parse(input('regex> ')) - nfa = to_nfa(regex) + except ParseError as err: + print('%s: Error: %s' % (sys.argv[0], str(err)), file=sys.stderr) - prettyprint(nfa) + else: + nfa = to_nfa(regex) + + prettyprint(nfa) if __name__ == '__main__': main() diff --git a/regex_to_regex.py b/regex_to_regex.py index 37fd61d..613f5f8 100644 --- a/regex_to_regex.py +++ b/regex_to_regex.py @@ -1,15 +1,21 @@ -from regex import lit, concat, bar, star +import sys + from regex_to_nfa import to_nfa from nfa_to_regex import to_regex +from parse_regex import parse, ParseError def main(): - regex = concat(bar(lit('foo'), lit('bar')), bar(lit('baz'), lit('qux'))) - print(regex) + try: + regex = parse(input('regex> ')) - nfa = to_nfa(regex) - regex_prime = to_regex(nfa) + except ParseError as err: + print('%s: Error: %s' % (sys.argv[0], str(err)), file=sys.stderr) - print(regex_prime) + else: + nfa = to_nfa(regex) + regex_prime = to_regex(nfa) + + print(regex_prime) if __name__ == '__main__': main()