Add common code for CS325 madness
This commit is contained in:
47
code/cs325-langs/src/PythonAst.hs
Normal file
47
code/cs325-langs/src/PythonAst.hs
Normal file
@@ -0,0 +1,47 @@
|
||||
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
|
||||
Reference in New Issue
Block a user