Avoid adding whitespaces before ";" and have duplicated ones
at the output after converting to string.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
 tools/lib/python/kdoc/c_lex.py | 27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/tools/lib/python/kdoc/c_lex.py b/tools/lib/python/kdoc/c_lex.py
index e641bace5d69..95c4dd5afe77 100644
--- a/tools/lib/python/kdoc/c_lex.py
+++ b/tools/lib/python/kdoc/c_lex.py
@@ -241,7 +241,7 @@ class CTokenizer():
         out=""
         show_stack = [True]
 
-        for tok in self.tokens:
+        for i, tok in enumerate(self.tokens):
             if tok.kind == CToken.BEGIN:
                 show_stack.append(show_stack[-1])
 
@@ -270,8 +270,29 @@ class CTokenizer():
 
                 continue
 
-            if show_stack[-1]:
-                    out += str(tok.value)
+            if not show_stack[-1]:
+                continue
+
+            if i < len(self.tokens) - 1:
+                next_tok = self.tokens[i + 1]
+
+                # Do some cleanups before ";"
+
+                if (tok.kind == CToken.SPACE and
+                    next_tok.kind == CToken.PUNC and
+                    next_tok.value == ";"):
+
+                    continue
+
+                if (tok.kind == CToken.PUNC and
+                    next_tok.kind == CToken.PUNC and
+                    tok.value == ";" and
+                    next_tok.kind == CToken.PUNC and
+                    next_tok.value == ";"):
+
+                    continue
+
+            out += str(tok.value)
 
         return out
 
-- 
2.52.0


Reply via email to