def _parse_call()

in cstar/nodetoolparser/describering.py [0:0]


def _parse_call(line, tokens):
    name = tokens.pop()
    res = {}

    if not type(name) is Identifier:
        raise ParseException(line, name.offset, "Bad identifier")

    paran = tokens.pop()
    if paran.val != '(':
        raise ParseException(line, paran.offset, "Expected '('")

    while True:
        _parse_argument(line, tokens, res)
        if tokens[-1].val == ',':
            tokens.pop()
        else:
            break
    if tokens[-1].val != ')':
        raise ParseException(line, tokens[-1].offset, "Expected a ')'")
    tokens.pop()
    return Call(name.val, res)