MCPcopy Create free account
hub / github.com/SplootCode/splootcode / generateSplootStatement

Function generateSplootStatement

python/convert_ast.py:285–328  ·  view source on GitHub ↗
(statement)

Source from the content-addressed store, hash-verified

283 }, {'id': None})
284
285def 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
331def splootFromPython(codeString):

Callers 3

splootNodeFromPythonFunction · 0.85
splootNodesFromPythonFunction · 0.85

Calls 9

generateExpressionFunction · 0.85
generateAssignmentFunction · 0.85
generateForFunction · 0.85
generateWhileFunction · 0.85
generateIfFunction · 0.85
generateFunctionFunction · 0.85
generateImportFunction · 0.85
generateImportFromFunction · 0.85
SplootNodeFunction · 0.70

Tested by

no test coverage detected