robustness + regex fix

This commit is contained in:
alcoholicgirl
2026-04-27 23:19:59 +08:00
parent 0afbbd2fdf
commit 7ba3035006
2 changed files with 8 additions and 4 deletions

View File

@ -42,7 +42,7 @@ class CommandChainParser:
class CommandParser:
CMD_PATTERN = r"^[a-zA-Z]+(?:\(([0-9.]+|(([a-zA-Z0-9]+(?:\(([^()]*|(?1)+)(\s*\,\s*(?1))*\))?)(\.(?1))*))(\s*\,\s*(?1))*\))?"
CMD_PATTERN = r"^[a-zA-Z]+(?:\(([0-9.\-+]+|(([a-zA-Z0-9]+(?:\(([^()]*|(?1)+)(\s*\,\s*(?1))*\))?)(\.(?1))*))(\s*\,\s*(?1))*\))?"
ID_PATTERN = r"^[a-zA-Z]+(?=\(|\.|$)"
ARG_PATTERN = CommandChainParser.CHAIN_PATTERN
TRIM_PATTERN = r"^\s*\,\s*"

View File

@ -19,6 +19,7 @@ TODO: 除零出现 nan 情况的单独处理
class ArgParser:
@staticmethod
def to_params(args: str, delim: str = ',') -> list[str]:
raise DeprecationWarning
_params = args.replace(" ", "").split(delim)
params: list[str] = []
# 还是避免 while 为好
@ -28,11 +29,14 @@ class ArgParser:
return params
@staticmethod
def as_float(args: list[str], default: float = 0.0) -> float:
def as_float(args: list[str] | str, default: float = 0.0) -> float:
try:
if len(args) >= 1:
if isinstance(args, list) and len(args) >= 1:
x = float(args[0])
return x
elif isinstance(args, str):
x = float(args)
return x
except:
# raise Exception(f"cannot parse {args}")
return default
@ -66,9 +70,9 @@ class ArgParser:
y = float(args[1])
z = float(args[2])
return np.array((x, y, z))
return default
except:
raise Exception(f"cannot parse {args}")
return default
@staticmethod
def as_vec4(