Skip to content

glan-wxl/pyast

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyAST is a library that allows for creating AST structures using declarative programming form.

example:

== jsast.py ==

import pyast as ast

class Node(ast.Node):
    pass

class Statement(Node):
    pass

class Expression(Pattern):
    pass

class Operator(Node):
    token = ast.field(("+","=","-","==","!=",">",">"))

class Identifier(Expression):
    name = ast.field((str, unicode))

class Literal(Expression):
    value = ast.field((str, bool, int, NoneType))

class Program(ast.Node):
    body = ast.seq(Statement, null=True)

class ExpressionStatement(Statement):
    expression = ast.field(Expression)

class AssignmentExpression(Expression):
    operator = ast.field(Operator)
    left = ast.field(Expression)
    right = ast.field(Expression)

== main.py ==

from jsast import *

prog = Program()
prog.body.append(
    ExpressionStatement(
        AssignmentExpression(
            Operator("="),
            Identifier("x"),
            Literal(2)
        )))

# result: x=2;
=========

pyast.DEBUG variable defines if pyast operates in DEBUG mode in which the 
strong typing is enforced at cost of performance, or optimized mode when all
the checks are inactive.

About

Basic set of classes for building abstract syntax trees

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%