diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-05-01 06:09:55 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-05-01 06:09:55 +0000 |
| commit | 22f44ef61f99acdec5d19f336bb80f6bb3a4e8b7 (patch) | |
| tree | 4ee1496edc1c5df1b11464ce8425071c3ef11994 /src/runtime/python/test.py | |
| parent | 41bccf5737544a6981dc6a17bb4bb8116ace7937 (diff) | |
word completion in the C runtime. The runtime/python/test.py example is now using readline with word completion
Diffstat (limited to 'src/runtime/python/test.py')
| -rw-r--r-- | src/runtime/python/test.py | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/src/runtime/python/test.py b/src/runtime/python/test.py index 437c29776..93a3c4a2d 100644 --- a/src/runtime/python/test.py +++ b/src/runtime/python/test.py @@ -1,26 +1,63 @@ -import sys import pgf +import sys +import sets +import readline sys.stdout.write("loading...") sys.stdout.flush(); gr = pgf.readPGF("../../../treebanks/PennTreebank/ParseEngAbs.pgf") sys.stdout.write("\n") +source_lang = gr.languages["ParseEng"] +target_lang = gr.languages["ParseBul"] + we = pgf.readExpr("UttImpSg PPos (ImpVP (UseV try_V))") -print gr.languages["ParseEng"].linearize(we) +print source_lang.linearize(we) sys.stdout.write("start cat: "+gr.startCat+"\n\n") +class Completer(): + def __init__(self, lang): + self.gr = lang + + def complete(self, prefix, state): + if state == 0: + line = readline.get_line_buffer() + line = line[0:readline.get_begidx()] + self.i = source_lang.getCompletions(line, prefix=prefix) + self.tokens = sets.Set() + + if len(self.tokens) > 50: + return None + + while True: + try: + (p,t) = self.i.next() + if t not in self.tokens: + self.tokens.add(t) + return t + except StopIteration: + return None + +completer = Completer(source_lang) +readline.set_completer(completer.complete) +readline.parse_and_bind("tab: complete") + while True: - sys.stdout.write("> ") - line = sys.stdin.readline(); - if line == '': + try: + line = raw_input("> "); + except EOFError: + sys.stdout.write("\n") + readline.set_completer(None) + break + except KeyboardInterrupt: sys.stdout.write("\n") - break; + readline.set_completer(None) + break try: - for (p,e) in gr.languages["ParseEng"].parse(line, n=5): + for (p,e) in source_lang.parse(line, n=1): sys.stdout.write("["+str(p)+"] "+str(e)+"\n") - print gr.languages["ParseEngBul"].linearize(e) + print target_lang.linearize(e) except pgf.ParseError as e: print e.message |
