From 23467c1d3daa6f1aa637bdc4aa96d3033cceebd0 Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Mon, 18 May 2026 20:13:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(autoscript):=20=E6=94=AF=E6=8C=81=20//=20?= =?UTF-8?q?=E8=A1=8C=E5=86=85=E6=B3=A8=E9=87=8A=E4=B8=8E=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=A1=8C=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/autoscript/ASTokenizer.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/autoscript/ASTokenizer.py b/src/autoscript/ASTokenizer.py index bdd2809..427afad 100644 --- a/src/autoscript/ASTokenizer.py +++ b/src/autoscript/ASTokenizer.py @@ -381,6 +381,20 @@ class ASTokenizer: stmt.op_type = OP_SUB return stmt + @classmethod + def _stripComment( + cls, + line: str + ) -> str: + + in_single = False + for i, ch in enumerate(line): + if ch == "'": + in_single = not in_single + elif ch == "/" and i + 1 < len(line) and line[i + 1] == "/" and not in_single: + return line[:i].rstrip() + return line + @classmethod def _tokenizeImpl( cls, @@ -389,11 +403,11 @@ class ASTokenizer: statements = [] for raw_line in script.split("\n"): - stripped = raw_line.strip() - if not stripped: + code = cls._stripComment(raw_line.strip()) + if not code: continue - kind, data = cls._matchLine(stripped) - statements.append(cls._buildStmt(stripped, kind, data)) + kind, data = cls._matchLine(code) + statements.append(cls._buildStmt(code, kind, data)) return statements @classmethod @@ -476,12 +490,12 @@ class ASTokenizer: cls._notifyObservers(observers, "onParseStart", script) statements = [] for i, raw_line in enumerate(script.split("\n"), 1): - stripped = raw_line.strip() - if not stripped: + code = cls._stripComment(raw_line.strip()) + if not code: continue - kind, data = cls._matchLine(stripped) - cls._notifyObservers(observers, "onTokenParsed", kind, data, i, stripped) - statements.append(cls._buildStmt(stripped, kind, data)) + kind, data = cls._matchLine(code) + cls._notifyObservers(observers, "onTokenParsed", kind, data, i, code) + statements.append(cls._buildStmt(code, kind, data)) cls._notifyObservers(observers, "onParseComplete", statements) return statements