def read_deriv(self, toks, parent=None): def body(toks): # HACK tag = "_" category = toks.next() headedness = toks.next() assert headedness in 'lrsec', "Unexpected head character encountered: %s" % headedness kids = [] if headedness == 'c': tag = toks.next() lex = toks.next() return A.Leaf(tag, lex, category, parent) else: if headedness in 's': kids.append(self.read_deriv(toks)) elif headedness in 'elr': kids.append(self.read_deriv(toks)) kids.append(self.read_deriv(toks)) return A.Node(tag, kids, category, parent, 0 if headedness in 'esl' else 1) return with_parens(body, toks)
def read_deriv(self, toks, parent=None): def body(toks): # HACK tag = toks.next() head_index = None if toks.peek() == '<' and (not tag == 'PU'): toks.next() head_index = int(toks.next()) shift_and_check( '>', toks ) category = None if toks.peek() == '{': toks.next() category = parse_category(toks.next()) shift_and_check( '}', toks ) kids = [] lex = None while toks.peek() != ')': if toks.peek() == '(': kids.append( self.read_deriv(toks) ) else: lex = toks.next() if (not kids) and lex: return A.Leaf(tag, lex, category, parent) else: ret = A.Node(tag, kids, category, parent, head_index) for kid in ret: kid.parent = ret return ret return with_parens(body, toks)
def read_deriv(self, toks, parent=None): def body(toks): tag = toks.next() lex = None kids = [] while toks.peek() != ')': if toks.peek() == '(': kids.append( self.read_deriv(toks) ) else: lex = toks.next() if (not kids) and lex: return N.Leaf(tag, lex, parent) else: ret = N.Node(tag, kids, parent) for kid in ret: kid.parent = ret return ret return with_parens(body, toks)
def read_deriv(self, toks, parent=None): def body(toks): # HACK tag = "_" head_index = 0 # head_index must be [01]; required by script convert_auto category = toks.next().replace('{', '(').replace('}', ')') kids = [] lex = None while toks.peek() != ')': if toks.peek() == '(': kids.append( self.read_deriv(toks) ) else: lex = toks.next() if (not kids) and lex: return A.Leaf(tag, lex, category, parent) else: ret = A.Node(tag, kids, category, parent, head_index) for kid in ret: kid.parent = ret return ret return with_parens(body, toks)
def read_paren(self, toks): return with_parens(self.read_deriv, toks)