From 0f33273b6f3eb3ffc6cf91830dbe75eca792f64d Mon Sep 17 00:00:00 2001 From: Stephan Seitz <stephan.seitz@fau.de> Date: Tue, 24 Sep 2019 14:04:02 +0200 Subject: [PATCH] Add SourceCodeComment/EmptyLine as AST nodes --- pystencils/astnodes.py | 46 ++++++++++++++++++++ pystencils/backends/cbackend.py | 6 +++ pystencils_tests/test_source_code_comment.py | 30 +++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 pystencils_tests/test_source_code_comment.py diff --git a/pystencils/astnodes.py b/pystencils/astnodes.py index b24138286..b9ad28e28 100644 --- a/pystencils/astnodes.py +++ b/pystencils/astnodes.py @@ -730,3 +730,49 @@ class DestructuringBindingsForFieldClass(Node): def get_dummy_symbol(dtype='bool'): return TypedSymbol('dummy%s' % uuid.uuid4().hex, create_type(dtype)) + + +class SourceCodeComment(Node): + def __init__(self, text): + self.text = text + + @property + def args(self): + return [] + + @property + def symbols_defined(self): + return set() + + @property + def undefined_symbols(self): + return set() + + def __str__(self): + return "/* " + self.text + " */" + + def __repr__(self): + return self.__str__() + + +class EmptyLine(Node): + def __init__(self): + pass + + @property + def args(self): + return [] + + @property + def symbols_defined(self): + return set() + + @property + def undefined_symbols(self): + return set() + + def __str__(self): + return "" + + def __repr__(self): + return self.__str__() diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 197e21d81..4e19fd67b 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -264,6 +264,12 @@ class CBackend: def _print_CustomCodeNode(self, node): return node.get_code(self._dialect, self._vector_instruction_set) + def _print_SourceCodeComment(self, node): + return "/* " + node.text + " */" + + def _print_EmptyLine(self, node): + return "" + def _print_Conditional(self, node): cond_type = get_type_of_expression(node.condition_expr) if isinstance(cond_type, VectorType): diff --git a/pystencils_tests/test_source_code_comment.py b/pystencils_tests/test_source_code_comment.py new file mode 100644 index 000000000..6cc66feb6 --- /dev/null +++ b/pystencils_tests/test_source_code_comment.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# +# Copyright © 2019 Stephan Seitz <stephan.seitz@fau.de> +# +# Distributed under terms of the GPLv3 license. + +""" + +""" +import pystencils +import pystencils.astnodes + + +def test_source_code_comment(): + + a, b = pystencils.fields('a,b: float[2D]') + + assignments = pystencils.AssignmentCollection( + {a.center(): b[0, 2] + b[0, 0]}, {} + ) + + ast = pystencils.create_kernel(assignments, target='cpu') + + ast.body.append(pystencils.astnodes.SourceCodeComment("Hallo")) + ast.body.append(pystencils.astnodes.EmptyLine()) + ast.body.append(pystencils.astnodes.SourceCodeComment("World!")) + print(ast) + compiled = ast.compile() + assert compiled is not None + print(pystencils.show_code(ast)) -- GitLab