Python module for building declarative AST
pip install pyast==1.0
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.