(statement)
| 283 | }, {'id': None}) |
| 284 | |
| 285 | def generateSplootStatement(statement): |
| 286 | global lineno |
| 287 | statement_lineno = lineno |
| 288 | lineno += 1 |
| 289 | if type(statement) == ast.Expr: |
| 290 | expr = generateExpression(statement.value) |
| 291 | return SplootNode("PYTHON_STATEMENT", {"statement": [expr]}, metadata={'lineno': statement_lineno}) |
| 292 | elif type(statement) == ast.Assign: |
| 293 | assign = generateAssignment(statement) |
| 294 | return SplootNode("PYTHON_STATEMENT", {"statement": [assign]}, metadata={'lineno': statement_lineno}) |
| 295 | elif type(statement) == ast.For: |
| 296 | forNode = generateFor(statement) |
| 297 | return SplootNode("PYTHON_STATEMENT", {"statement": [forNode]}, metadata={'lineno': statement_lineno}) |
| 298 | elif type(statement) == ast.While: |
| 299 | whileNode = generateWhile(statement) |
| 300 | return SplootNode("PYTHON_STATEMENT", {"statement": [whileNode]}, metadata={'lineno': statement_lineno}) |
| 301 | elif type(statement) == ast.If: |
| 302 | return SplootNode("PYTHON_STATEMENT", {"statement": [generateIf(statement)]}, metadata={'lineno': statement_lineno}) |
| 303 | elif type(statement) == ast.FunctionDef: |
| 304 | func = generateFunction(statement) |
| 305 | return SplootNode("PYTHON_STATEMENT", {"statement": [func]}, metadata={'lineno': statement_lineno}) |
| 306 | elif type(statement) == ast.Break: |
| 307 | return SplootNode("PYTHON_STATEMENT", {"statement": [SplootNode('PY_BREAK')]}, metadata={'lineno': statement_lineno}) |
| 308 | elif type(statement) == ast.Continue: |
| 309 | return SplootNode("PYTHON_STATEMENT", {"statement": [SplootNode('PY_CONTINUE')]}, metadata={'lineno': statement_lineno}) |
| 310 | elif type(statement) == ast.Return: |
| 311 | value = SplootNode("PYTHON_EXPRESSION", {"tokens": []}) |
| 312 | |
| 313 | if statement.value: |
| 314 | value = generateExpression(statement.value) |
| 315 | |
| 316 | return SplootNode("PYTHON_STATEMENT", {"statement": [SplootNode("PYTHON_RETURN", {"value": [value]})]}, metadata={'lineno': statement_lineno}) |
| 317 | elif type(statement) == ast.Import: |
| 318 | return SplootNode("PYTHON_STATEMENT", {"statement": [generateImport(statement)]}) |
| 319 | elif type(statement) == ast.ImportFrom: |
| 320 | return SplootNode("PYTHON_STATEMENT", {"statement": [generateImportFrom(statement)]}) |
| 321 | elif type(statement) == ast_comments.Comment: |
| 322 | if statement.value == "##SPLOOTCODEEMPTYLINE": |
| 323 | return SplootNode("PYTHON_STATEMENT", {"statement": []}) |
| 324 | return SplootNode("PYTHON_STATEMENT", {"statement": [SplootNode("PY_COMMENT", {}, {"value": statement.value.lstrip().lstrip('#').lstrip()})]}) |
| 325 | elif type(statement) == ast.Pass: |
| 326 | return None |
| 327 | else: |
| 328 | raise Exception(f'Unrecognised statement type: {type(statement)}') |
| 329 | |
| 330 | |
| 331 | def splootFromPython(codeString): |
no test coverage detected