48 lines
983 B
Haskell
48 lines
983 B
Haskell
|
module PythonAst where
|
||
|
|
||
|
data PyBinOp
|
||
|
= Add
|
||
|
| Subtract
|
||
|
| Multiply
|
||
|
| Divide
|
||
|
| LessThan
|
||
|
| LessThanEq
|
||
|
| GreaterThan
|
||
|
| GreaterThanEq
|
||
|
| Equal
|
||
|
| NotEqual
|
||
|
| And
|
||
|
| Or
|
||
|
|
||
|
data PyExpr
|
||
|
= BinOp PyBinOp PyExpr PyExpr
|
||
|
| IntLiteral Int
|
||
|
| StrLiteral String
|
||
|
| BoolLiteral Bool
|
||
|
| ListLiteral [PyExpr]
|
||
|
| DictLiteral [(PyExpr, PyExpr)]
|
||
|
| Lambda [PyPat] PyExpr
|
||
|
| Var String
|
||
|
| Tuple [PyExpr]
|
||
|
| FunctionCall PyExpr [PyExpr]
|
||
|
| Access PyExpr [PyExpr]
|
||
|
| Ternary PyExpr PyExpr PyExpr
|
||
|
| Member PyExpr String
|
||
|
| In PyExpr PyExpr
|
||
|
| NotIn PyExpr PyExpr
|
||
|
|
||
|
data PyPat
|
||
|
= VarPat String
|
||
|
| IgnorePat
|
||
|
| TuplePat [PyPat]
|
||
|
| AccessPat PyExpr [PyExpr]
|
||
|
|
||
|
data PyStmt
|
||
|
= Assign PyPat PyExpr
|
||
|
| IfElse PyExpr [PyStmt] [(PyExpr, [PyStmt])] (Maybe [PyStmt])
|
||
|
| While PyExpr [PyStmt]
|
||
|
| For PyPat PyExpr [PyStmt]
|
||
|
| FunctionDef String [String] [PyStmt]
|
||
|
| Return PyExpr
|
||
|
| Standalone PyExpr
|