view src/python_ast.rs @ 3:326d7f2a94d4

Remove useless abstraction of function name as Expr.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 31 May 2016 02:36:24 +0100
parents 5fc7c2790d8c
children f27a4aee9dfa
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(String, 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,
}