def read_featval(tokens, feat=None, sort=None, variables=None): # FEAT : (var-or-handle|const) name = tokens.popleft() if feat is not None: validate_token(name, feat) validate_token(tokens.popleft(), _colon) # if it's not a variable, assume it's a constant if var_re.match(tokens[0]) is not None: value = read_variable(tokens, sort=sort, variables=variables) else: value = tokens.popleft() return name, value
def extract_valency(ep): valencies = [] for role in ('ARG1', 'ARG2', 'ARG3', 'ARG4'): v = ep.args.get(role) if v is not None: m = var_re.match(v) if m is not None: n = role[-1] vs = m.group(1) if vs not in ('u', 'i', 'p'): valencies.append(n + vs) return ''.join(valencies)
def _encode_ep(ep, varprops=None): attributes = {'cfrom': str(ep.cfrom), 'cto': str(ep.cto)} if ep.surface is not None: attributes['surface'] = ep.surface if ep.base is not None: attributes['base'] = ep.base e = etree.Element('ep', attrib=attributes) e.append(_encode_pred(ep.pred)) e.append(_encode_label(ep.label)) for rargname, val in ep.args.items(): if var_re.match(val): e.append(_encode_arg(rargname, _encode_variable(val, varprops))) else: e.append(_encode_arg(rargname, _encode_constant(val))) return e
def encode_ep(ep, varprops=None): attributes = {'cfrom': str(ep.cfrom), 'cto': str(ep.cto)} if ep.surface is not None: attributes['surface'] = ep.surface if ep.base is not None: attributes['base'] = ep.base e = etree.Element('ep', attrib=attributes) e.append(encode_pred(ep.pred)) e.append(encode_label(ep.label)) if ep.iv is not None: e.append(encode_arg(IVARG_ROLE, encode_variable(ep.iv, varprops))) for rargname, val in ep.args.items(): if var_re.match(val): e.append(encode_arg(rargname, encode_variable(val, varprops))) else: e.append(encode_arg(rargname, encode_constant(val))) return e