robustness + regex fix
This commit is contained in:
@ -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*"
|
||||
|
||||
@ -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(
|
||||
|
||||
Reference in New Issue
Block a user