view src/python_ast.rs @ 2:5fc7c2790d8c

Add class support.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 31 May 2016 02:31:55 +0100
parents b90e49ab734b
children 326d7f2a94d4
line wrap: on
line source

#[derive(Clone, Debug)]
pub struct Module {
    pub name: String,
    pub statements: Vec<Statement>,
}

#[derive(Clone, Debug)]
pub enum Statement {
    ClassDef(String, Vec<Expr>, Vec<Statement>),
    FunctionDef(Expr, Vec<Expr>, Vec<Statement>),
    Global(Vec<String>),
    If(Expr, Vec<Statement>, Vec<Statement>),
    Assign(Vec<Expr>, Expr),
    Return(Expr),
    ImportFrom(String, Vec<Expr>),
    Expr(Expr),
    Error,
}

#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum Expr {
    BinOp(Box<Expr>, BinOp, Box<Expr>),
    Compare(Box<Expr>, Vec<BinOp>, Vec<Expr>),
    Call(Box<Expr>, Vec<Expr>),
    Alias(String, Option<String>),
    Name(String),
    NameConstant(String),
    Str(String),
    Num(String),
    Error
}

#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub enum BinOp {
    BinAdd,
    BinMult,
    BinEq,
    BinLt,
    Error,
}