Beispiel #1
0
    # FIXME
    if isinstance(p.lexer, PythonLexer):
        data = p.lexer.lexer.lexdata
        pos = p.lexer.lexer.lexpos
    else:
        data = p.lexer.lexdata
        pos = p.lexer.lexpos

    try:
        nl = data.rindex("\n", 0, pos)
    except ValueError:
        nl = 0

    try:
        nr = data.index("\n", pos)
    except ValueError:
        nr = len(data)

    print(data[nl:nr], file=sys.stderr)
    print((" " * (pos - nl - 1)) + "^", file=sys.stderr)

    if p.value is None:
        raise ParserError("Syntax Error in line %d, unexpected end" % p.lineno)
    else:
        raise ParserError("Syntax Error in line %d, unexpected %r" % (p.lineno, p.value))


parser = yacc.yacc(debug=False, write_tables=True,
        tabmodule="libpie.curly._table", outputdir=os.path.dirname(__file__))

Beispiel #2
0
    """exprlist : EXPR
                | exprlist EXPR
    """
    if len(p) == 2:
        if p[1]:
            p[0] = (p[1],)
        else:
            p[0] = ()
    else:
        if p[2]:
            p[0] = p[1] + (p[2],)
        else:
            p[0] = p[1]


def p_error(p):
    if p is None:
        raise ParserError("Invalid expression (unclosed parenthesis?)")
    else:
        raise ParserError(str(p))


parser = yacc.yacc(tabmodule="libpie.code._table", outputdir=os.path.dirname(__file__))


def parse(code):
    if not code.strip():
        code = "map()"
    parser.parse(code, lexer=lexer)
    yield from parser.result