Initial parser.
4 Author: Eugen Sawin <sawine@informatik.uni-freiburg.de>
20 TOKENS = {re.compile("~"): NOT,
23 re.compile("->"): IMP,
24 re.compile("<->"): EQ,
25 re.compile("\[\]"): BOX,
26 re.compile("<>"): DIAMOND,
27 re.compile("[a-z]+"): P}
29 class Scanner(object):
30 def __init__(self, tokens, source=None):
34 while self.i < len(self.source):
35 for p, token in self.tokens.iteritems():
36 m = p.match(self.source[self.i:])
42 def reset(self, source):
47 def __init__(self, scanner):
48 self.scanner = scanner
49 def parse(self, source):
50 self.scanner.reset(source)
51 token = self.scanner.next()
54 token = self.scanner.next()
58 args = parse_arguments()
59 scanner = Scanner(TOKENS)
60 parser = Parser(scanner)
61 parser.parse(args.formula)
63 from argparse import ArgumentParser
65 def parse_arguments():
66 parser = ArgumentParser(description="Parses Simple Modal Logic syntax.")
67 parser.add_argument("formula", help="your formula")
68 return parser.parse_args()
70 if __name__ == "__main__":