Ejemplo n.º 1
0
def cat(filename, tokenizer, patterns, writer):
    """Parses file, then applies patterns on parsetree root before
    passing it to writer."""

    ## Parsing:
    root = parsetree.fromfile(filename, tokenizer, attr_type=dict)

    ## Applying patterns:
    if patterns:
        for node in root.preorder():
            for pattern in patterns:
                pattern.match(node)

    ## Writing:
    writer.write_node(root)
Ejemplo n.º 2
0
from ptTools.patterns import AnyPattern as Any
from ptTools.patterns import LiteralPattern as Lit
from ptTools.patterns import TuplePattern
from ptTools.patterns import TuplePattern as Tup

from prettify import patterns as prettify


if __name__ == '__main__':

    print(__doc__)

    ## Initializing writer for printing ParseTreeNodes:
    writer = AnsiParseTreeWriter(sys.stdout)
    ## Creating a ParseTreeNode from this very file:
    root = parsetree.fromfile(__file__, attr_type=dict)
    ## Creating a pattern that matches itself in this file:
    _ = Any() 
    captures = []
    X = _%captures.append
    pattern = Tup(symbol.expr_stmt,
                  Tup(Lit(symbol.testlist_star_expr)
                      >> (token.NAME, 'pattern')),
                  (token.EQUAL, '='),
                  X)
    ## Matches parse tree node described by:
    ##
    ##   (expr.stmt
    ##       (testlist_star_expr
    ##           (.. (NAME, 'pattern')),
    ##       (EQUAL '='),