From f2ba77bd7529dbe5155377db4561a7312d92e207 Mon Sep 17 00:00:00 2001 From: Panupong Pasupat Date: Wed, 26 Oct 2016 12:05:31 -0700 Subject: [PATCH] Better convert to postfix --- tables/dump-parsers/convert-to-postfix.py | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tables/dump-parsers/convert-to-postfix.py b/tables/dump-parsers/convert-to-postfix.py index 3030e8e..2897a83 100755 --- a/tables/dump-parsers/convert-to-postfix.py +++ b/tables/dump-parsers/convert-to-postfix.py @@ -85,25 +85,23 @@ def convert(tree, args): recurse(subtree[1]) answer.append(opr) if not args.implicit_join: - answer.append('.') + answer.append('join') else: # Join with a complex construct assert len(subtree) == 2, str(subtree) - if args.implicit_join: - # Only allows ((reverse ...) ...) - assert subtree[0][0] == 'reverse', str(subtree) - assert len(subtree[0]) == 2, str(subtree) - recurse(subtree[1]) - answer.append('!' + subtree[0][1]) - else: - recurse(subtree[1]) - recurse(subtree[0]) - answer.append('.') + # Only allows ((reverse ...) ...) + assert subtree[0][0] == 'reverse', str(subtree) + assert len(subtree[0]) == 2, str(subtree) + recurse(subtree[1]) + answer.append('!' + subtree[0][1]) + if not args.implicit_join: + answer.append('join') recurse(tree) return answer def process(line, args): - line = line[:-1].split('\t') - print '\t'.join([' '.join(convert(lisptree.parse(line[0]), args))] + line[1:]) + line = line.rstrip('\n').split('\t') + line[args.field] = ' '.join(convert(lisptree.parse(line[args.field]), args)) + print '\t'.join(line) def main(): parser = argparse.ArgumentParser() @@ -113,6 +111,8 @@ def main(): help='Do not output "lambda reverse" for superlatives') parser.add_argument('-t', '--collapse-type-row', action='store_true', help='Collapse "(type row)" into a single token') + parser.add_argument('-f', '--field', type=int, default=0, + help='Field index (tab-separated; 0-based) containing the logical form') parser.add_argument('infile') args = parser.parse_args()