Mercurial > python-compiler.rs
annotate src/python_ast.rs @ 6:6f2bf13f4cb5
Add ast.While and ast.Break.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Tue, 31 May 2016 04:22:35 +0100 |
parents | ddf372373a77 |
children | 680d15073f55 |
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>), |
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), |
16 Return(Expr), | |
17 ImportFrom(String, Vec<Expr>), | |
18 Expr(Expr), | |
6
6f2bf13f4cb5
Add ast.While and ast.Break.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5
diff
changeset
|
19 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
|
20 Error |
0 | 21 } |
22 | |
23 #[derive(Clone, Debug, PartialEq, Eq, Hash)] | |
24 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
|
25 UnaryOp(UnaryOp, Box<Expr>), |
0 | 26 BinOp(Box<Expr>, BinOp, Box<Expr>), |
27 Compare(Box<Expr>, Vec<BinOp>, Vec<Expr>), | |
28 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
|
29 Alias(String, Option<String>), |
4
f27a4aee9dfa
Add ast.Attribute.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
3
diff
changeset
|
30 Attribute(Box<Expr>, String), |
0 | 31 Name(String), |
32 NameConstant(String), | |
33 Str(String), | |
34 Num(String), | |
35 Error | |
36 } | |
37 | |
38 #[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
|
39 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
|
40 UAdd, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
41 USub, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
42 Error |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
43 } |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
44 |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
45 #[derive(Clone, Debug, PartialEq, Eq, Hash)] |
0 | 46 pub enum BinOp { |
47 BinAdd, | |
48 BinMult, | |
49 BinEq, | |
50 BinLt, | |
6
6f2bf13f4cb5
Add ast.While and ast.Break.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5
diff
changeset
|
51 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
|
52 Sub, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
53 Div, |
ddf372373a77
Add ast.For, ast.UnaryOp, and Sub and Div to ast.BinOp.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
4
diff
changeset
|
54 Error |
0 | 55 } |