Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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