Mercurial > python-compiler.rs
annotate src/python_ast.rs @ 5:ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Tue, 31 May 2016 04:15:00 +0100 |
parents | f27a4aee9dfa |
children | 6f2bf13f4cb5 |
rev | line source |
---|---|
0 | 1 #[derive(Clone, Debug)] |
2 pub struct Module { | |
3 pub name: String, | |
4 pub statements: Vec<Statement>, | |
5 } | |
6 | |
7 #[derive(Clone, Debug)] | |
8 pub enum Statement { | |
2
5fc7c2790d8c
Add class support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1
diff
changeset
|
9 ClassDef(String, Vec<Expr>, Vec<Statement>), |
3
326d7f2a94d4
Remove useless abstraction of function name as Expr.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2
diff
changeset
|
10 FunctionDef(String, Vec<Expr>, Vec<Statement>), |
0 | 11 Global(Vec<String>), |
12 If(Expr, Vec<Statement>, Vec<Statement>), | |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
13 For(Expr, Expr, Vec<Statement>, Vec<Statement>), |
0 | 14 Assign(Vec<Expr>, Expr), |
15 Return(Expr), | |
16 ImportFrom(String, Vec<Expr>), | |
17 Expr(Expr), | |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
18 Error |
0 | 19 } |
20 | |
21 #[derive(Clone, Debug, PartialEq, Eq, Hash)] | |
22 pub enum Expr { | |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
23 UnaryOp(UnaryOp, Box<Expr>), |
0 | 24 BinOp(Box<Expr>, BinOp, Box<Expr>), |
25 Compare(Box<Expr>, Vec<BinOp>, Vec<Expr>), | |
26 Call(Box<Expr>, Vec<Expr>), | |
1
b90e49ab734b
Factorise conversion of Python str into Rust String.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
0
diff
changeset
|
27 Alias(String, Option<String>), |
4
f27a4aee9dfa
Add ast.Attribute.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3
diff
changeset
|
28 Attribute(Box<Expr>, String), |
0 | 29 Name(String), |
30 NameConstant(String), | |
31 Str(String), | |
32 Num(String), | |
33 Error | |
34 } | |
35 | |
36 #[derive(Clone, Debug, PartialEq, Eq, Hash)] | |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
37 pub enum UnaryOp { |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
38 UAdd, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
39 USub, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
40 Error |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
41 } |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
42 |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
43 #[derive(Clone, Debug, PartialEq, Eq, Hash)] |
0 | 44 pub enum BinOp { |
45 BinAdd, | |
46 BinMult, | |
47 BinEq, | |
48 BinLt, | |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
49 Sub, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
50 Div, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
51 Error |
0 | 52 } |