Mercurial > python-compiler.rs
annotate src/python_ast.rs @ 10:3bf4903d1d2c
Add Assign and ImportFrom bindings.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Thu, 02 Jun 2016 01:00:29 +0100 |
parents | fa7e285f88e7 |
children | 38b0d63697b1 |
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>), |
9
fa7e285f88e7
Add a scoping pass, associating each module/statement with a block.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
8
diff
changeset
|
10 FunctionDef(String, Vec<String>, 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>), |
6
6f2bf13f4cb5
Add ast.While and ast.Break.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5
diff
changeset
|
14 While(Expr, Vec<Statement>, Vec<Statement>), |
0 | 15 Assign(Vec<Expr>, Expr), |
8
94ff501bf336
Add ast.AugAssign.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
7
diff
changeset
|
16 AugAssign(Expr, BinOp, Expr), |
0 | 17 Return(Expr), |
18 ImportFrom(String, Vec<Expr>), | |
19 Expr(Expr), | |
6
6f2bf13f4cb5
Add ast.While and ast.Break.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5
diff
changeset
|
20 Break, |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
21 Error |
0 | 22 } |
23 | |
24 #[derive(Clone, Debug, PartialEq, Eq, Hash)] | |
25 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
|
26 UnaryOp(UnaryOp, Box<Expr>), |
0 | 27 BinOp(Box<Expr>, BinOp, Box<Expr>), |
28 Compare(Box<Expr>, Vec<BinOp>, Vec<Expr>), | |
29 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
|
30 Alias(String, Option<String>), |
4
f27a4aee9dfa
Add ast.Attribute.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3
diff
changeset
|
31 Attribute(Box<Expr>, String), |
0 | 32 Name(String), |
33 NameConstant(String), | |
34 Str(String), | |
35 Num(String), | |
7
680d15073f55
Add ast.List literal.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
6
diff
changeset
|
36 List(Vec<Expr>), |
0 | 37 Error |
38 } | |
39 | |
40 #[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
|
41 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
|
42 UAdd, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
43 USub, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
44 Error |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
45 } |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
46 |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
47 #[derive(Clone, Debug, PartialEq, Eq, Hash)] |
0 | 48 pub enum BinOp { |
49 BinAdd, | |
50 BinMult, | |
51 BinEq, | |
52 BinLt, | |
6
6f2bf13f4cb5
Add ast.While and ast.Break.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5
diff
changeset
|
53 BinGt, |
5
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
54 Sub, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
55 Div, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
56 Error |
0 | 57 } |